findContours内存泄漏,崩溃

关于vc调用findContour出现以下崩溃问题,

 

搜索了网上有很多解决方案,最后发现都不能解决我的问题。经过几天的跟踪测试,发现该函数的第一个参数必须是单通道图像数据:

vector<vector<Point>> contours; //这里要用全局变量,不知为什么?
vector<Vec4i> hierarchy;
cv::Mat srcImage;

//

void FindObj(void)

srcImage = imread("d:\\1.bmp");

srcImage = srcImage > 119;  //转换成二值图像,问题就出在这里,因为通过下面语句可以看到srcImage的通道是3

int i1 = srcImage.channels(); //i1的值是3,但findContours要求是单通道1

findContours(srcImage, contours, hierarchy, RETR_CCOMP, CHAIN_APPROX_SIMPLE);

}

------------------------------------------------

上述代码稍作修改,即可解决:

void FindObj(void)

 srcImage = imread("d:\\1.bmp");

cvtColor(srcImage, srcImage, CV_BGR2GRAY,1);//转换成单通道

srcImage = srcImage > 119;  //图像二值化

int i1 = srcImage.channels(); /通道值是1,

findContours(srcImage, contours, hierarchy, RETR_CCOMP, CHAIN_APPROX_SIMPLE);

}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值