我是靠谱客的博主 苗条微笑,这篇文章主要介绍VS2017+OpenCV findContours函数出现中断的解决方案,现在分享给大家,希望可以做个参考。

出现的问题 OpenCV中出现“Microsoft C++ 异常: cv::Exception,位于内存位置 0x某某 处。”的异常。

在用opencv311+VS2017做图像处理相关,遇到了程序不报错但是一运行就中断的问题,“Microsoft C++ 异常: cv::Exception,位于内存位置 0x某某 处。”

提示的错误位置在findContours函数那一行。

找了很多解决方案都没有得到解决,最终发现是findContours函数输入的图片格式不正确,才导致的中断。
可能我们的问题不相同,但是可以参考,看一看是不是传入图片格式的问题。

void cv::findContours   (   InputOutputArray    image,
                            OutputArrayOfArrays     contours,
                            OutputArray     hierarchy,
                            int     mode,
                            int     method,
                            Point   offset = Point()
                        )   

函数定义如上,输入的第一个参数,InputArray类型的image,即输入的源图像,是Mat类型的8位单通道图像。即,图像的非零像素被视为1,0像素值被保留为0,所以图像为二进制。我们可以使用compare()、inrange()、threshold()、canny()等函数获得二进制图像。

最终的代码是酱紫的:
binImage是我从视频帧currentFrame得到的二值图像

cvtColor(currentFrame, binImage, CV_BGR2GRAY);
vector<vector<Point>> contours;                                 
	findContours(binImage, contours, CV_RETR_EXTERNAL, CHAIN_APPROX_NONE);

问题解决啦!程序不会出现中断可以运行啦!

最后

以上就是苗条微笑最近收集整理的关于VS2017+OpenCV findContours函数出现中断的解决方案的全部内容,更多相关VS2017+OpenCV内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(133)

评论列表共有 0 条评论

立即
投稿
返回
顶部