2010-05-12 165 views
6

我试图使用“新”2.0 c + +版本的OpenCV,但一切就像在简单的C版本。我在更改图像中的值时遇到了一些问题。OpenCV(C++)多通道元素访问

图像是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; 
     } 
    } 
} 

这不起作用。我究竟做错了什么???

谢谢!

+0

的另一种方式,'图像(CV ::矩形(X,Y,宽度,高度))= CV ::标量(R,G,B);'如果你想用'CV_8UC3'类型的颜色设置一个特定的区域。 – 2014-07-16 11:31:18

回答

14

您不应该使用Vec3b而不是Vec3i

CV_8UC3表示您的图像是8位,3通道,无符号字符。而Vec3i用于3通道整数,而Vec3b用于3通道无符号字符。

所以我想你应该使用Vec3b