cvFindContours()异常?

时间:2011-10-29 01:04:43

标签: c++ image opencv contour

我正在创建实时软件,因此cvFindContours通常在完全黑色的掩码上调用。如果是这种情况,cvFindContours会抛出异常,程序崩溃。

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

由于

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

1 个答案:

答案 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来完成同样的事情。因此,如果图像全部为黑色,则表示图像仅包含零。因此,当它是黑色掩模时,总和将为零。