0x00007FF872444FD9 处(位于 Project1.exe 中)有未经处理的异常: Microsoft C++ 异常: cv::Exception,位于内存位置 0x000000F11317EFB8 处。
解决方法
-
将读取文件的路径改为双“ "
Mat image = imread("D:\opencv_learn\Project1\tu1.jpg"); Mat logo = imread("D:\opencv_learn\Project1\tu2.jpg");或将图片放置在工程文件下下方,并直接读取
-
查看链接器-输入-附加依赖,Debug x64应该为opencv_world***d.lib,查看一下是否填写错误
-
查看是否有重复的窗口名,检查下imshow()是不是写错了(经过实验,不同窗口读取相同图片不会产生bug)
//输入后显示 namedWindow("tupian1"); imshow("tupian1", image); namedWindow("tupian2"); imshow("tupian2", logo); -
图片颜色变换问题、图片通道数问题、图片尺寸问题,我的问题如下面代码所示,将image放在logo的左下角,但由于image的像素比logo大,大的图片不可能作为小的图片的一部分,所以产生了本次错误,再将image和logo切换位置后,可以成功运行。
大家在写OPENCV的代码时,也要注意Rect后面初始位置的两个参数,如果x+logo.cols比image.cols大,就有可能产生本错误。
//定义一个Mat类型,用于存放图像的ROI
Mat imageROI;
//方法一,利用Rect设置ROI位置
imageROI = logo(Rect(0, 0, image.cols, image.rows));
//方法二
//imageROI=image(Range(350,350+logo.rows),Range(00,800+logo.cols));
//将logo加到原图上
addWeighted(imageROI, 0.5, image, 0.3, 0., imageROI);
namedWindow("hunhe");
imshow("hunhe", image);
//imwrite("apicture.jpg", image);
waitKey();
destroyAllWindows();
return 0;
我们可以看到tupian1比tupian2大



