与OpenCV的垫C加载图像++(load image with openCV Mat c++)

2019-08-31 14:45发布

我想加载OpenCV中使用垫的图像

我的代码是:

Mat I = imread("C:/images/apple.jpg", 0);
namedWindow( "Display window", CV_WINDOW_AUTOSIZE );// Create a window for display.
imshow( "Display window", I ); 

我收到以下错误消息框:

Unhandled exception at 0x70270149 in matching.exe: 0xC0000005: Access violation 
reading location 0xcccccccc.

请注意,我包括:

#include <cv.h>
#include <cxcore.h>
#include <highgui.h>
#include <iostream>
#include <math.h>

请帮忙。 谢谢。

Answer 1:

我已经谈过这个这么多次前,我想这是毫无意义的做一遍,但防守代码 :如果一个方法/函数调用失败,请确保您知道什么时候会发生:

Mat I = imread("C:\\images\\apple.jpg", 0);
if (I.empty())
{
    std::cout << "!!! Failed imread(): image not found" << std::endl;
    // don't let the execution continue, else imshow() will crash.
}

namedWindow( "Display window", CV_WINDOW_AUTOSIZE );// Create a window for display.
imshow( "Display window", I ); 
waitKey(0);

需要注意的是Windows的路径使用反斜线\而不是标准的/在* nix系统中使用。 你需要逃离传递文件名时反斜线: C:\\images\\apple.jpg

调用waitKey()如果你用的是强制性imshow()

编辑

如果是cv::imread()被抛出异常,我知道工作是下载的OpenCV源和构建它的机器上,因为重新安装的OpenCV没有解决这个问题的唯一解决方案



Answer 2:

我不知道为什么你没有包括的问题,因为通常它.HPP文件,所以你该做的

#include <opencv2/highgui/highgui.hpp>
#include <opencv2\core\eigen.hpp>

但是你的代码似乎不错,但加cv::waitKey(0); 后您的imshow。



Answer 3:

你检查,我imread后存在? 也许文件读取失败

读取文件后做if ( I.empty() )以检查它是否失败



Answer 4:

您是否在使用Visual Studio 2010中运行OpenCV的代码? 如果是的话,尝试在Release模式下进行编译。



文章来源: load image with openCV Mat c++