Mengambil Nilai Saluran Pixel daripada Perwakilan Mat OpenCV
Untuk mendapatkan nilai saluran bagi piksel tertentu dalam imej Mat OpenCV, anda boleh menggunakan kaedah berikut:
Kaedah 1: Menggunakan OpenCV's Vec3b
Untuk imej Mat jenis CV_8UC3, mengandungi tiga saluran (biru, hijau dan merah), struktur data Vec3b boleh digunakan:
for(int i = 0; i < foo.rows; i++) { for(int j = 0; j < foo.cols; j++) { Vec3b bgrPixel = foo.at<Vec3b>(i, j); // Access individual channel values: uint8_t blue = bgrPixel[0]; uint8_t green = bgrPixel[1]; uint8_t red = bgrPixel[2]; } }
Kaedah 2: Akses Penampan Terus
Untuk prestasi yang lebih baik, akses terus kepada penimbal data imej boleh digunakan:
uint8_t* pixelPtr = (uint8_t*)foo.data; int cn = foo.channels(); // Number of channels per pixel for(int i = 0; i < foo.rows; i++) { for(int j = 0; j < foo.cols; j++) { // Retrieve channel values: uint8_t blue = pixelPtr[i*foo.cols*cn + j*cn + 0]; uint8_t green = pixelPtr[i*foo.cols*cn + j*cn + 1]; uint8_t red = pixelPtr[i*foo.cols*cn + j*cn + 2]; } }
Nota: OpenCV menyimpan data piksel secara dalaman dalam format BGR (biru, hijau, merah), dan bukannya RGB.
Atas ialah kandungan terperinci Bagaimana untuk Cekap Mengakses Nilai Saluran Piksel dalam Imej Mat OpenCV?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!