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

1、问题描述

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

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

[ WARN:[email protected]] 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。

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

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配置错误:

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

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,

VS+Opencv出现:位于 OpenCVTest.exe 中有未经处理的异常: Microsoft C++ 异常: std::bad_alloc,位于内存位置 0x0000003898FBEC70处_第4张图片测试代码如下:

#include
#include  
#include
#include
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;
}

重新生成:

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

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

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

 

 

你可能感兴趣的:(c++,开发语言,计算机视觉,人工智能,opencv)