我是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,也能正常工作。
我想我错过了一些东西。如果你能从中得到一些感觉,我会感谢你们。
答案 0 :(得分:3)
您正在使用Vec3b
迭代器,该迭代器应该用于3通道图像。您正在使用单个频道图片来迭代此类图片,您必须将Vec3b
替换为uchar
。