0

我正在创建实时软件,所以经常在一个完全黑色的蒙版上调用 cvFindContours。如果出现这种情况,cvFindContours 会抛出异常,程序会崩溃。

如果 cvFindContours 无法找到轮廓,我将如何做到这一点,而不是程序崩溃,程序只是移动到下一行代码(只是简单的继续)?

谢谢

PS:我想过自动保持一个像素始终为白色,以防止 cvFindContours 无法找到轮廓,但这对我来说很不方便。

4

1 回答 1

1

您为什么不尝试以下方法:

Mat black = Mat::zeros(Size(100, 100), CV_8UC1);

vector< vector<Point> > contours;

if(sum(black).val[0] > 0.0)
{
    findContours(black, contours, CV_RETR_CCOMP, CV_CHAIN_APPROX_SIMPLE);
}
else
{
    cout << "It's a black image, so I'm not going to do anything..." << endl;
}

这是使用 C++ 接口,但您应该能够使用它cvSum来完成同样的事情。因此,如果图像全黑,则意味着图像仅包含零。因此,当它是黑色蒙版时,总和将为零。

于 2011-10-29T02:42:29.330 回答