Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

OpenCV (c++) multi channel element access

Tags:

c++

opencv

I'm trying to use the "new" 2.0 c++ version of OpenCV, but everything is else like in simple C version. I have some problem with changing the values in image.

The image is 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;
        }
    }
}

It's not working. What am I doing wrong???

Thank you!

like image 886
Vic Avatar asked May 12 '10 08:05

Vic


1 Answers

Shouldn't you be using Vec3b instead of Vec3i ?

CV_8UC3 means your image is 8 bit, 3 channels, unsigned char. While Vec3iis for 3 channels integers and Vec3bis for 3 channels unsigned char.

So I think you should be using Vec3b

like image 185
Sunny Avatar answered Oct 16 '22 10:10

Sunny