【opencv】异常:Microsoft C++ exception: cv::Exception at memory location xxxxxxxx解决

(新人第一篇博文,只是想汇总一下问题解决方式,如有错误欢迎指正,侵删~)

最近在用VS 2013和opencv搞遗传算法的可视化,找了份代码运行不通,调试时出现“cv::Exception at memory location 0x000000BA8F64E70” 的信息。没见过,百度试一下,总结列出我觉得比较有用的解决方式:

  1. 检查环境配置(如果前面程序可以运行,且没有手动修改过什么的话,基本不需要考虑这一条,往下);

  2. 有读取图片或文件操作的:图片或文件放置的位置不正确、命名错误、格式等错误:
    注意及解决:
    1)仔细检查文件名及格式是否错误(.png写成.jpg我是见过的;名字大写打成小写的也是太多了);
    2)如果使用绝对路径,路径格式应为:(举例)
    C:\\Users\\XXX\\Desktop\\map.jpg (注意!不是单杠!!!);
    3)如果不采用绝对路径,请务必保证读取的图片或文件存储放在工程目录中,将图片放到工程目录中的.cpp同路径下!!!
    就像这个样子~
    4) 读取文件的时候读取的是中文名称的文件也可能出错,目前最好的解决方案就是把中文名称改成英文。
    5) 值得注意的一个问题是,有的时候由于图像的大小超过计算机屏幕分辨率大小,也可能出现这一问题(贴个链接给你们看):
    【OpenCV】异常: cv::Exception,位于内存位置 0x000000000030F440 处

  3. 如果都不是的话,那就从代码看起。大部分情况下都是某个位置的参数、变量或者是函数调用等出错,这个没有固定的解决方案,只能自己设断点,查程序慢慢找。
    我的就是函数调用的问题,具体原因在于:我的程序分多个cpp和头文件,GetPoint和mouse_event两个cpp都写了my_mouse_callback这一函数来记录鼠标点击的信息等,起初图省事写了一样的名字,后来为了区分就把GetPoint里面的重命名为了my_mouse_callback_,二者的实现有一些区别,
    然后…调用的时候忘记了改过的下划线…对,就是这句
    然后就导致每次执行到这里的时候,狂点鼠标也没有记录点的信息,然后就开始一轮崩溃~
    改过来之后就完美运行了。

然后看了一下搜到的,也大多都是代码本身的问题,链接贴出来方便大家参考~
1)
使用copyTo生成图片的时候,因为维度的不同而造成这个提示错误
2)Debug下运行报这个错误,切换到Release下运行正常
3)矩形左上角坐标设置的过大,导致内存出问题!
(看完这篇,我就找到bug所在了,哈哈哈,本文也依照这篇博文进行整理,在此感谢~~)

总结:关键在于,要细心要细心要细心!!!
码代码的时候如果够细心,可以省掉大部分bug。。。

  • 5
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值