近期有做关于提取图像轮廓的MFC程序,opencv的findContours函数是效果挺不错的一个选择。但我的程序在编译完全没问题的情况下出现报错。报错情况如下:
1.Debug版:在析构findContours的vector<vector<cv::Point>>类型参数时,报出的
内存错误。这个原因,有大神已经分析的非常精确了。(见http://blog.youkuaiyun.com/auto1993/article/details/52694521,膜拜)。
2.Release版:直接在调用findContours函数时就触发断点。
根据网上多位大神的总结和分析,大神们提出的方法我都单独试过,对我的程序均无效。于是我开始综合交叉试验:
1.Debug版本与Release版本的链接库分开链入。Debug版链入“opencv_world320d.lib”,而Release版链入"opencv_world320.lib"。(未解决)
2.在1的基础上,我手动为vector分配了大小:vector<vector<cv::Point>>m_vector_contours(1000);
结果发现Release版本起效了,而Debug版仍旧报错。(未解决)
3.将Debug版本配置为“在共享DLL中使用MFC”。(问题解决!)
至此,Release版和Debug版运行均无报错。
问题虽然解决了,但我仍是满脑的疑问。(非编程专业人员的悲哀...)如有哪位大神走过路过,欢迎讨论。