c++|有未经处理的异常: Microsoft C++ 异常: cv::Exception

因为是个小白昨晚照书上写了一个两个矩阵或者图像进行比较运算

#include #include #includeusing namespace std; using namespace cv; int main() { double a[12] = {1,2,3.3,4,5,9,5,7,8.2,9,10,2}; double b[12] = {1,2.2,3,1,3,10,6,7,8,9.3,10,1}; Mat imga = Mat(3, 4, CV_32FC1, a); Mat imgb = Mat(3, 4, CV_32FC1, b); Mat imgas = Mat(2, 3, CV_32FC2, a); Mat imgbs = Mat(2, 3, CV_32FC2, b); //对两个单通道矩阵进行比较运算 Mat myMax, myMin; max(imga, imgb, myMax); min(imga, imgb, myMin); //对两个多通道矩阵进行比较运算 Mat myMaxs, myMins; max(imgas, imgbs, myMaxs); min(imgas, imgbs, myMins); Mat img0 = imread("D:\\image\\1.jpg"); Mat img1 = imread("D:\\image\\2.jpg"); //imshow("img0", img0); //imshow("img1", img1); //waitKey(0); if (img0.empty() || img1.empty()) { cout << "输错了文件" << endl; return -1; } Mat comMin,comMax; cv::max(img0,img1,comMax); cv::min(img0,img1,comMin); imshow("comMin",comMin); imshow("comMax", comMax); //与掩膜进行比较 Mat src1 = Mat::zeros(Size(512,512), CV_8UC3); Rect rect(100, 100, 300, 300); src1(rect) = Scalar(255, 255, 255); Mat comsrc1, comsrc2; min(img0, src1, comsrc1); imshow("comsrc1",comsrc1); Mat src2 = Mat(512, 512, CV_8UC3, Scalar(0, 0, 255)); min(img0, src2, comsrc2); imshow("comsrc2", comsrc2); Mat img0G, img1G, comMinG, comMaxG; cvtColor(img0, img0G, COLOR_BGR2GRAY); cvtColor(img1, img1G, COLOR_BGR2GRAY); max(img0G, img1G, comMaxG); min(img0G, img1G, comMinG); imshow("comMinG", comMinG); imshow("comMaxG", comMaxG); waitKey(0); return 0; }

运行时老出现中断,结合查阅的资料大概分为3种情况:
1.图片路径错误。
解决方法:可以添加绝对路径,绝对路径注意把“\”改为"\\";
2。环境配置错误。
解决方法:在debug模式下 附加依赖项改为opencv_world451d.lib
如图:c++|有未经处理的异常: Microsoft C++ 异常: cv::Exception
文章图片
如果是release 就是 opencv_world451.lib

PS.好像是这样的 具体可以再参考一下别人的文章,因为我不是这样解决的。
3.我的问题就出在这里!!!
两个矩阵/图像大小不一致!!
我的1号图是512*512的 2号图1024*1024 不能比呀!!!!
必须要保证你图大小一致才能比!!!

【c++|有未经处理的异常: Microsoft C++ 异常: cv::Exception】最后再检查一遍你的代码有没有打错!!也很重要!!!!!!

    推荐阅读