cvFindContours()异常?

发布于 2024-12-12 17:24:18 字数 231 浏览 9 评论 0原文

我正在创建实时软件,因此经常在全黑蒙版上调用 cvFindContours。如果这种情况,cvFindContours 会抛出异常,并且程序崩溃。

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

谢谢

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

I am creating real time software, so often cvFindContours is called on a completely black mask. If this case, cvFindContours throws an exception, and the program crashes.

How would I make it so that if cvFindContours is unable to find contours, instead of the program crashing, the program just moves onto the next line of code (just simple continues)?

Thanks

PS: I thought about keeping one pixel automatically always white to prevent cvFindContours from not being able to find an contour, but this would be inconvenient to me.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

俏︾媚 2024-12-19 17:24:18

为什么不尝试如下操作:

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

Why don't you try something as follows:

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;
}

This is using the C++ interface, but you should be able to use cvSum to accomplish the same thing. So, if the image is all black, that means the image contains only zeros. Therefore, the sum will be zero when it is a black mask.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文