Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> C++

Đọc giá trị pixel ảnh đa kênh (RGB) trong OpenCV C++

Ả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.ptr(r) rồi truy cập rowPtr[3*c + ch].
  • Hoặc dùng MatIterator.

Kết quả

Doc xong anh