开发者社区> 问答> 正文

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()注释掉就不再报错  ,求大神解答怎么回事

展开
收起
爱吃鱼的程序员 2020-06-22 23:49:20 573 0
1 条回答
写回答
取消 提交回答
  • https://developer.aliyun.com/profile/5yerqm5bn5yqg?spm=a2c6h.12873639.0.0.6eae304abcjaIB

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

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

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

    2020-06-22 23:49:38
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载