1

我是 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,也可以在 elease 中使用。

我想我错过了一些东西。如果您能从中有所了解,我将不胜感激。

4

1 回答 1

3

您正在使用Vec3b应该用于 3 通道图像的迭代器。您正在使用单通道图像,要迭代这样的图像,您必须Vec3buchar.

于 2012-04-08T16:14:07.173 回答