2010-05-12 36 views
6

Tôi đang cố sử dụng phiên bản OpenCV mới "2.0", nhưng mọi thứ khác giống như trong phiên bản C đơn giản. Tôi có một số vấn đề với việc thay đổi các giá trị trong hình ảnh.OpenCV (C++) truy cập phần tử đa kênh

Hình ảnh là CV_8UC3.

for (int i=0; i<image.rows; i++) 
{ 
    for (int j=0; j<image.cols; j++) 
    { 
     if (someArray[i][j] == 0) 
     { 
      image.at<Vec3i>(i,j)[0] = 0; 
      image.at<Vec3i>(i,j)[1] = 0; 
      image.at<Vec3i>(i,j)[2] = 0; 
     } 
    } 
} 

Nó không hoạt động. Tôi đang làm gì sai ???

Cảm ơn bạn!

+0

Một cách khác, 'ảnh (cv :: Rect (x, y, width, height)) = cv :: Scalar (r, g, b);' nếu bạn muốn đặt một vùng cụ thể với màu cho loại 'CV_8UC3'. –

Trả lời

14

Bạn không nên sử dụng Vec3b thay vì Vec3i?

CV_8UC3 có nghĩa là hình ảnh của bạn là 8 bit, 3 kênh, unsigned char. Trong khi Vec3i dành cho 3 số nguyên kênh và Vec3b dành cho 3 kênh không được ký.

Vì vậy, tôi nghĩ rằng bạn nên sử dụng Vec3b

Các vấn đề liên quan