我正在创建实时软件,因此cvFindContours通常在完全黑色的掩码上调用。如果是这种情况,cvFindContours会抛出异常,程序崩溃。
如果cvFindContours无法找到轮廓而不是程序崩溃,程序只会移动到下一行代码(只是简单的继续)?我将如何做到这一点?
由于
PS:我想过让一个像素自动保持白色以防止cvFindContours无法找到轮廓,但这对我来说不方便。
答案 0 :(得分: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
来完成同样的事情。因此,如果图像全部为黑色,则表示图像仅包含零。因此,当它是黑色掩模时,总和将为零。