0x00007FF872444FD9 处(位于 Project1.exe 中)有未经处理的异常: Microsoft C++ 异常: cv::Exception,位于内存位置 0x000000F11

0x00007FF872444FD9 处(位于 Project1.exe 中)有未经处理的异常: Microsoft C++ 异常: cv::Exception,位于内存位置 0x000000F11317EFB8 处。

0x00007FF872444FD9 处(位于 Project1.exe 中)有未经处理的异常: Microsoft C++ 异常: cv::Exception,位于内存位置 0x000000F11_第1张图片

解决方法

  1. 将读取文件的路径改为双“ \"

    	Mat image = imread("D:\\opencv_learn\\Project1\\tu1.jpg");
    	Mat logo = imread("D:\\opencv_learn\\Project1\\tu2.jpg");
    

    或将图片放置在工程文件下下方,并直接读取

    0x00007FF872444FD9 处(位于 Project1.exe 中)有未经处理的异常: Microsoft C++ 异常: cv::Exception,位于内存位置 0x000000F11_第2张图片

  2. 查看链接器-输入-附加依赖,Debug x64应该为opencv_world***d.lib,查看一下是否填写错误

  3. 查看是否有重复的窗口名,检查下imshow()是不是写错了(经过实验,不同窗口读取相同图片不会产生bug)

    //输入后显示
    namedWindow("tupian1");
    imshow("tupian1", image);
    namedWindow("tupian2");
    imshow("tupian2", logo);
    
  4. 图片颜色变换问题、图片通道数问题、图片尺寸问题,我的问题如下面代码所示,将image放在logo的左下角,但由于image的像素比logo大,大的图片不可能作为小的图片的一部分,所以产生了本次错误,再将image和logo切换位置后,可以成功运行。

    大家在写OPENCV的代码时,也要注意Rect后面初始位置的两个参数,如果x+logo.colsimage.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大

你可能感兴趣的:(opencv,c++,opencv,计算机视觉)