简体   繁体   中英

load image with openCV Mat c++

I want to load an image using Mat in openCV

My code is:

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

I am getting the following error in a message box:

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

Please note that I am including:

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

I've talked about this so many times before, I guess it's pointless to do it again, but code defensively : if a method/function call can fail, make sure you know when it happens:

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);

Note that Windows' path uses backslash \\ instead of the standard / used on *nix systems. You need to escape the backslash when passing the filename: C:\\\\images\\\\apple.jpg

Calling waitKey() is mandatory if you use imshow() .

EDIT :

If it's cv::imread() that is throwing the exception the only solution I know to work is downloading OpenCV sources and building it on the machine, since re-installing OpenCV doesn't fix the issue.

Have you checked that I exists after imread? Perhaps the file read failed

After reading a file do if ( I.empty() ) to check if it failed

I don't know why you don't have include problem because normally it .hpp file so you're suppose to do

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

But your code seems good but add a cv::waitKey(0); after your imshow.

Are you using visual studio 2010 to run the OpenCV code? If so, try compiling in Release mode.

正如@karlphillip 所指出的,无论听起来多么微不足道,但这句话“传递文件名时需要转义反斜杠:C:\\images\\apple.jpg”非常重要。

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM