VS+Opencv出现:位于 OpenCVTest.exe 中有未经处理的异常: Microsoft C++ 异常: std::bad_alloc,位于内存位置 0x0000003898FBEC70处

1、问题描述

0x00007FF98F394F69 处(位于 OpenCVTest.exe 中)有未经处理的异常: Microsoft C++ 异常: std::bad_alloc,位于内存位置 0x0000003898FBEC70 处。

[ WARN:0@0.111] global c:\build\master_winpack-build-win64-vc15\opencv\modules\imgcodecs\src\loadsave.cpp (239) cv::findDecoder imread_(‘

 

C:\Users\Administrator\source\repos\OpenCVTest\x64\Debug\OpenCVTest.exe (进程 11492)已退出,代码为 -1。

2、原因分析

1.路径出错:这里的imread函数的路径为双斜杠、或单反斜杠,或在斜杠前加r(注:python中可以,C++中未测试过),不必非要放在解决方案路径下。

 项目同目录下为:Mat src = imread(“02.jpg”);

或非项目同目录下,需绝对路径: Mat src = imread(“C:\\02.jpg”); 

或非项目同目录下,需绝对路径: Mat src = imread(r”C:\02.jpg”); 

或非项目同目录下,需绝对路径: Mat src = imread(“C:/02.jpg”); 

2.这也是最难发现的原因,即opencv_world460.lib、opencv_world460d.lib配置错误:

Debug、X64模式下,不能opencv_world460.lib、opencv_world460d.lib两个都填进去,否则容易出错,这里说容易出错的原因是因为谁排在前面,VS先识别谁,opencv_world460.lib对应Release配置,opencv_world460d.lib对应Debug配置,这里opencv_world460.lib排在最前面,先识别,和Debug、X64模式冲突,所以导致上述错误!

解决方法:

要么用Debug、X64 和opencv_world460d.lib,

要么用Release、X64 和opencv_world460.lib,

只用一个,保证不发生错误

这里笔者用Debug、X64 和opencv_world460d.lib,

测试代码如下:

#include<opencv2/opencv.hpp>
#include <opencv2/core/core.hpp>  
#include <opencv2/highgui/highgui.hpp>
#include<iostream>
using namespace cv;
using namespace std;

int main(int argc, char** argv)
{
    //注意:图片文件放置在工程当前目录下
    Mat src = imread(“02.jpg”);
    if (src.empty())
    {
        cout << “could not load image…” << endl;
        return -1;
    }
    namedWindow(“Test opencv setup”, 100);
    imshow(“test opencv setup”, src);
    waitKey(0);
    destroyAllWindows();
    return 0;
}

重新生成:

 Debug运行,成功显示输出测试图片。(注:测试图片为OpenCV开发帮助文档图片) 

 

 

 

文章出处登录后可见!

已经登录?立即刷新

共计人评分,平均

到目前为止还没有投票!成为第一位评论此文章。

(0)
乘风的头像乘风管理团队
上一篇 2023年11月28日
下一篇 2023年11月28日

相关推荐