opencv 图片合成报错 访问冲突

#include
#include
#include
using namespace cv;
int main()
{
Mat img = imread("1.jpg");
Mat logo =imread("2.jpg");
namedWindow("[1]原图");
imshow("[1]原图",img);
namedWindow("[2]logo图");
imshow("[2]logo图", logo);
Mat imgROI;
imgROI = img(Rect(0,0,logo.cols,logo.rows));
addWeighted(imgROI, 0.5, logo, 0.3,0., imgROI);
namedWindow("成图");
imshow("成图", img);
imwrite("合成图.jpg",img);
waitKey();
return 0;
}

 运行报错显示:0x00007FF8150DC002 (opencv_world300.dll)处(位于 图像处理.exe 中)引发的异常: 0xC0000005: 读取位置 0x000002A222EB3000 时发生访问冲突。
    测试发现把imwrite()注释掉就不再报错  ,求大神解答怎么回事

3个回答

imwrite/imread 的参数是std::string, 因此只能使用ASCII码的文件名,至少我刚开始接触OpenCV的时候还是这样,不知道现在那么多版本里有没有哪个修改了这个特性,你可以先把中文名字改成英文的试一下。。。

qq_37940599
qq_37940599 回复Valtava: 你好,我也遇到了这个错误,我不是很理解你说的解决办法,可以告诉我一下吗,我的Q1032136819
接近 3 年之前 回复
QiaXi
Valtava 额,刚发现std::string也是可以直接用于非ascii字符处理的,把代码按照适当的编码,比如utf-8保存就好了
3 年多之前 回复

应该是指针没有初始化造成的。

改成 imwrite("123.jpeg", image_gray, compression_params); 试一试

Opencv_SRY
winslam 回复Opencv_SRY: 第二个参数 img
接近 3 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问