opencv cvLoadImage()失败,报错0xc0000005读取位置0x000000008时发生访问冲突

本文介绍了一个使用OpenCV加载图像时遇到的空指针异常问题,并详细解释了解决方案,包括如何正确处理文件路径中的转义字符,以及添加防空指针报错语句的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

今天用opencv测试图像,发现使用cvLoadImage()再显示程序报错:

const char *psrcImgPath = "D:\code\1.jpg";
IplImage *psrcImg = cvLoadImage(psrcImgPath, CV_LOAD_IMAGE_UNCHANGED);

cvNameWindow("Input", CV_WINDOW_AUTOSIZE);
cvShowImage("Input", psrcImg);

运行时发生错误:0x0000013F0E114C处引发的异常: 0xC000005:读取位置0x00000008时发生访问冲突。

首先,0xC000005错误通常是指针为空指针,设置断点定位确实是空指针的问题,因而进一步查找psrcImg为空指针的原因。

psrcImg指针是由opencv自带函数得到的,函数调用没有问题,唯一可能出错是的就是cvLoadImage函数的第一个参数,即图像路径存在位置 。排除了图像确实存在的问题后,意识到可能是转义字符的问题:所有的\都需要转义字符\\来表示,即"D:\code\1.jpg"需要表示成“D:\\code\\1.jpg”,修改后程序正常运行。

这里也说明另一个问题,在涉及到读取图像的地方最好加上防空指针报错语句,即

if(psrcImg == NULL)
{
  printf("Read file failure.\n");
  exit(-1);
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值