我正在创建实时软件,所以经常在一个完全黑色的蒙版上调用 cvFindContours。如果出现这种情况,cvFindContours 会抛出异常,程序会崩溃。
如果 cvFindContours 无法找到轮廓,我将如何做到这一点,而不是程序崩溃,程序只是移动到下一行代码(只是简单的继续)?
谢谢
PS:我想过自动保持一个像素始终为白色,以防止 cvFindContours 无法找到轮廓,但这对我来说很不方便。
您为什么不尝试以下方法:
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
来完成同样的事情。因此,如果图像全黑,则意味着图像仅包含零。因此,当它是黑色蒙版时,总和将为零。