使用Mat :: at迭代图像时崩溃

时间:2012-04-08 15:54:00

标签: c++ opencv

我是c ++界面的新手,并且没有关于此代码的想法:

//buffer : VideoCapture >> cvtColor >> Canny

for(int i=0;i<buffer.rows;i++) //search for edges
{
    for (int j=0 ;j<buffer.cols;j++)
    {
        Vec3b pixel=buffer.at<Vec3b>(i,j);
    }
}

在调试模式下运行正常,但在发布时在某些时候崩溃(i = 479,j = 448)。(哦,当然不能发现任何异常......)

Vec3b pixel=buffer.at<Vec3b>(1,1000);
即使我的图像(缓冲区)是640 * 480,

也能正常工作。

我想我错过了一些东西。如果你能从中得到一些感觉,我会感谢你们。

1 个答案:

答案 0 :(得分:3)

您正在使用Vec3b迭代器,该迭代器应该用于3通道图像。您正在使用单个频道图片来迭代此类图片,您必须将Vec3b替换为uchar