2 baidu 34371895 baidu_34371895 于 2016.04.19 17:29 提问

在opencv中利用findContours进行轮廓检测,程序运行结束时为什么会报中断错误,求解?

代码如下:
#include
#include
#include
#include
#include
#include

using namespace cv;
using namespace std;

//一、将源图片转成单通道的灰阶图片
Mat changeSourceImg(Mat img){
Mat great(img.size(), CV_8U);
cvtColor(img, great, CV_BGR2GRAY);
return great;
}

//二、对灰度图像进行阈值操作得到二值图像
void thresholdOperation(Mat img){
threshold(img, img, 100, 255, CV_THRESH_OTSU | CV_THRESH_BINARY_INV);
}
int main(){
system("color 5E");//改变cmd控制台的颜色
//一、得到灰度图
Mat src = imread("pic1.png", CV_LOAD_IMAGE_COLOR);
namedWindow("原图");
imshow("原图",src);
if (!src.data) return false;
Mat great = changeSourceImg(src);
namedWindow("灰度图");
imshow("灰度图",great);
//二、对灰度图像进行阈值操作得到二值图像
thresholdOperation(great);
namedWindow("二值图像");
imshow("二值图像", great);
//三、轮廓检测(只获取最外层的)
vector> contours;
vector hierarchy;//空间
findContours(great, contours, hierarchy, CV_RETR_EXTERNAL, CV_CHAIN_APPROX_SIMPLE);
namedWindow("轮廓检测");
imshow("轮廓检测",great);
cout << "共有外围轮廓:" << hierarchy.size() << "条" << endl;
//输出一些帮助信息
cout << "\t嗯。运行成功,请观察图像效果." << endl << "按下“q”键时,程序退出~!";
//轮询获取按键信息,若下q键,程序退出

while (char(waitKey(1)) != 'q') {}
return 0;
}
错误信息:
HEAP[ocr.exe]: Invalid address specified to RtlFreeHeap( 004A0000, 020DBBF8 )
ocr.exe 已触发了一个断点。

1个回答

caozhy
caozhy   Ds   Rxr 2016.04.19 19:13

Invalid address specified to RtlFreeHeap
有指针重复释放,检查下代码出错的行。

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
opencv轮廓检测之椭圆检测-----算法篇(10)--FindContours函数算法解释
Topological structural analysis of digitized binary images by border following 1985   出于对版权的考虑,  这里只附上论文名,  墙内百度文库可以找到.  资源共享是好事, 但请大家尊重版权不要拿不是自己的东西来赚积分 首先介绍了基本概念        1. 上下左右极限位置构成了frame,
findContours函数导致崩溃
在程序中使用:findContours(grayImage, contours, hierarchy, CV_RETR_EXTERNAL, CV_CHAIN_APPROX_SIMPLE, Point(0, 0) );后导致程序崩溃,将该语句屏蔽后,程序并没有问题。同样打开的另外一个工程使用该语句没有问题。将没有问题的语句拷贝到该工程下,同样出错。解决方案:在配置属性->常规->MFC的使用中,将在
vs+opencv中findcontours崩溃的问题
vs+opencv中findcontours崩溃的问题最近遇到了vs2010和vs2013中findcontours崩溃的问题,查了好多,在一个人的回答里找到了解决方法vector<Mat> contours(100); Mat hierarchy; findContours( BW, contours, hierarchy, CV_RETR_CCOMP, CV_CHAIN_APPROX_NONE
FindContours()函数使用时导致的程序崩溃问题的解决方案
最近通过使用opencv做标志牌检测时,涉及到了opencv库中findContours函数的调用,在对该函数使用时出现了程序崩溃的问题,花了两天的时间才解决的该问题。 下面先对findContour函数进行简单的介绍,再次介绍一下碰到findcontours导致程序崩溃时,网络上出现的一些的解决方案,最后介绍一下我自己碰到的该问题时的解决方案。首先,在这里先简单的对findContours函数进
Python OpenCV -- 轮廓检测 (十四)
轮廓检测     Canny 之类的边缘检测算法可以根据像素间的差异检测出轮廓边界,但是它并没有将轮廓作为一个整体     轮廓是构成任何一个形状的边界或外形线。直方图对比和模板匹配根据色彩的分布来进行匹配,以下包括:轮廓的查找、     表达方式、组织方式、绘制、特性、匹配。 查找轮廓     可以使用OpenCV 自带的  cv2.findContours 函数来查找检测物体
opencv中findContours导致crash
没用到MFC,网上的方法: 1,在配置属性->常规->MFC的使用中,将在静态库中使用MFC改为在共享DLL中使用MFC。无效 2,多线程调试(/MTd)改为多线程DLL调试(/MDd)。无效 3,直接将:_findContours( Mat& image, vector& contours, vector* hierarchy, int mode, int method, Point o
轮廓查找问题小记
opencv中使用Mat进行轮廓查找的函数如下: void findContours(InputOutputArray image, OutputArrayOfArrays contours, int mode, int method, Point offset=Point()) opencv文档地址 这个函数看起来挺简单的,我们输入一张图像,它就给我们返回相应的轮廓,但是一张图像经过不同处理
OpenCV-Python教程(11、轮廓检测)
相比C++而言,Python适合做原型。本系列的文章介绍如何在Python中用OpenCV图形库,以及与C++调用相应OpenCV函数的不同之处。这篇文章介绍在Python中使用OpenCV的检测并绘制轮廓。
vs2010和2012中Opencv2.4 轮廓findContours内存错误crash非配置方式完美解决方法验证代码
vs2010和2012中Opencv2.4轮廓findContours内存错误crash非配置方式完美解决方法验证代码。可以代码方式解决opencv2自带findContours内存错误bug,附件源码直接示范使用和验证!
Opencv FindContours报错的解决方案
近期有做关于提取图像轮廓的MFC程序,opencv的findContours函数是效果挺不错的一个选择。但我的程序在编译完全没问题的情况下出现报错。报错情况如下: 1.Debug版:在析构findContours的vector>类型参数时,报出的内存错误。这个原因,有大神已经分析的非常精确了。(见http://blog.csdn.net/auto1993/article/details/5269