opencv:未经处理的异常、RPC服务器不可用、cv::exception问题

来源:互联网 发布:新歌声网络直播地址 编辑:程序博客网 时间:2024/05/20 20:22

本人刚接触opencv不久,应用这么一段程序用于二值化图片的亮斑检测并处理。

程序主要做了三点工作:

1.      遍历文件夹中的图片,依次载入相应的处理对象;

2.      findContours检测二值化之后的图片,得到亮白色轮廓信息;

3.      fitEllipse对轮廓包络,求解中心坐标,并把中心坐标、面积等信息写入xml文件。


程序运行过程中,出现两次内存异常。

1.DefetionFlaw.exe 中的 0x759f812f处最可能的异常: 0x000006BA: RPC 服务器不可用。

2.DefetionFlaw.exe 中的 0x759f812f 处有未经处理的异常: Microsoft C++ 异常: 内存位置 0x079be540 处的 cv::Exception。

第1处的异常出现在下方      //载入处理目标所在的路径

if (lp && SHGetPathFromIDList(lp, szPath))
{
g_strPath.Format(szPath);

第2次的异常出现在下方    //用椭圆对轮廓singlecontour进行包络

rotatedRectEllipse = cv::fitEllipse(singleContour);

关于第1处问题,网上大多数的做法是通过修改注册值,打开RPC。

注释:RPCSS服务是COM和DCOM服务器的服务控制管理器。它执行COM和DCOM服务器的对象激活请求。对象导出程序解析和分布式垃圾收集。如果此服务被停用或禁用,则使用COM或DCOM的程序无法正常工作。

说明:确认本机的RPC是自动打开的,这方面没有问题。

关于第2处问题,网上大多数说是内存越界以及无效指针之类的问题,我对异常内存位置进行检测,并无异常,反汇编代码始终是leave。

源代码见DefetionFlaw.rar;(VS2010 + opencv + defectsDetetion  + xml)
处理照片见X00-Y02.jpg类似如此;点击打开链接

请给我前辈或同仁帮忙看看,这是什么原因造成的。

0 0
原创粉丝点击