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_('
文章来源地址https://www.toymoban.com/news/detail-776465.html
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开发帮助文档图片)
文章来源:https://www.toymoban.com/news/detail-776465.html
到了这里,关于VS+Opencv出现:位于 OpenCVTest.exe 中有未经处理的异常: Microsoft C++ 异常: std::bad_alloc,位于内存位置 0x0000003898FBEC70处的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!