从MAT Image获取行数/列数

时间:2014-01-19 08:25:39

标签: c++ opencv image-processing computer-vision

当我意识到我的代码出了问题时,我正在做一些密谋。因此,为了进行测试,在调试时,我尝试将图像中的所有像素更改为白色。

请查看以下代码。它应该工作正常吗?我过去写过这段代码也没有问题。但是......如果您看到下面的图像,并非所有图像都变白。只有不到一半,这是“列数”,但不是这样的。知道为什么吗?

{
        //uchar* z= image.data;
        for (int i=0; i < image.rows; i++)
        {
            for (int j=0; j < image.cols; j++)
            { 
                image.at<uchar>(i,j)= 255; //make all the pixels in the image white
            }
        }
        cv::imshow("After",image);
    }

结果(见“后”窗口): enter image description here

2 个答案:

答案 0 :(得分:3)

您正在处理彩色图像,这意味着它的大小为3 * m * n个字节。您只将第一个m * n像素变为白色。

答案 1 :(得分:3)

您应该按照以下方式进行:

 Vec3b intensity;
 intensity.val[0] = 255;
 intensity.val[1] = 255;
 intensity.val[2] = 255;

        for (int i=0; i < image.rows; i++)
        {
            for (int j=0; j < image.cols; j++)
            { 
                image.at<Vec3b>(i,j)= intensity; //make all the pixels in the image white
            }
        }
        cv::imshow("After",image);
    }