Ảnh màu (BGR) trong OpenCV là ma trận 3 kênh. Truy cập pixel tại (row, col):
Vec3b pixel = img.at(row, col);
uchar blue = pixel[0];
uchar green = pixel[1];
uchar red = pixel[2];
Ví dụ đọc toàn ảnh
#include
using namespace cv;
int main() {
Mat img = imread("color.jpg");
if (img.empty()) return -1;
for (int r = 0; r < img.rows; r++) {
for (int c = 0; c < img.cols; c++) {
Vec3b px = img.at(r, c);
// px[0]=Blue, px[1]=Green, px[2]=Red
// Xử lý tại đây...
}
}
cout << "Doc xong anh" << endl;
return 0;
}
Lưu ý hiệu năng
- Duyệt pixel bằng
at()chậm do kiểm tra biên mỗi lần. - Nên dùng con trỏ dòng:
uchar* rowPtr = img.ptrrồi truy cập(r) rowPtr[3*c + ch]. - Hoặc dùng
MatIterator.
Kết quả
Doc xong anh