cvSaveImage()出现Microsoft C++ 异常: cv::Exception 20C

源代码:
#include
#include
#include

void main()
{
IplImage* aa = cvLoadImage("13.jpg", 0);
cvSaveImage("result.jpg", aa, 0);
}
很短很短的程序。
图片说明
上面是我的程序的运行界面。
出现了错误,到底错在哪我也不知道。
以下答案将被驳回:
1.aa的颜色顺序不对,aa必须转成RGB颜色顺序。
请注意读取时的参数:cvLoadImage("13.jpg", 0);
aa是8位单通道灰度图像,不存在颜色顺序问题。
2.图片目录不对,要将相对目录改成绝对目录。
我试过了,没用,提示相同的错误。我保证13.jpg存在于同级目录之下。

运行环境:VS2017 + opencv3.4.2 + win10 + 64位环境
所有的运行环境一律都是64位

4个回答

这是opencv3.x的bug,如果要在这个版本下读取和保存图片请使用imread和imwrite函数。一定要用cvLoadImage和cvSaveImage,请在opencv2.x版本中使用。
你可以试试将版本切换到opencv2.x再试试看,应该就正常了。

这个很简单,只有两个函数调用,所以要么cvLoadImage抛出了异常,要么cvSaveImage抛出异常,单步调试就可以确定问题在哪里。

猜测你实在第2个函数抛出异常了,可能是由于cvLoadImage执行失败,返回了空指针

检查一下图片处理时是否超出了图片的内存区域,比如坐标设置是否过大

phenix2009
白色一大坨 回复yamengxi: 方便加qq吗,我可以给你演示一下调用这函数的demo,465617727
一年多之前 回复
yamengxi
yamengxi cvSaveImage函数没有设置坐标参数,不存在坐标越界的情况。
一年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问