baidu_34371895 2016-04-19 09:29 采纳率: 0%
浏览 3632

在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条回答

  • threenewbee 2016-04-19 11:13
    关注

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

    评论

报告相同问题?

悬赏问题

  • ¥20 ML307A在使用AT命令连接EMQX平台的MQTT时被拒绝
  • ¥20 腾讯企业邮箱邮件可以恢复么
  • ¥15 有人知道怎么将自己的迁移策略布到edgecloudsim上使用吗?
  • ¥15 错误 LNK2001 无法解析的外部符号
  • ¥50 安装pyaudiokits失败
  • ¥15 计组这些题应该咋做呀
  • ¥60 更换迈创SOL6M4AE卡的时候,驱动要重新装才能使用,怎么解决?
  • ¥15 让node服务器有自动加载文件的功能
  • ¥15 jmeter脚本回放有的是对的有的是错的
  • ¥15 r语言蛋白组学相关问题