Ask Your Question
0

Imread causing fatal error on the program

asked Jul 5 '13

h3now gravatar image

updated Jul 6 '13

This should be a really straightforward question. When I run the following code:

    #include "main.h"

    using namespace cv;
    int main( int argc, char** argv ) 
    {
        Mat image;
        image = imread("C:\\Users\\Public\\Pictures\\Sample Pictures\\Lighthouse.jpg");
        namedWindow("k");
        imshow("k",image);
        waitKey(0);
    }

This error shows up when I try to run the imread line. Anyone knows what am I doing wrong here?

Thank's in advace.


Additional Info

This is being done in visual studio 2008 professional editions on a windows 7 32-bit machine.

I'm trying to debug the "Release" version.

This is the main.h file:

    #pragma once

    #ifndef _WIN32_WINNT
    #define _WIN32_WINNT 0x0600
    #endif

    #pragma warning( disable: 4996 )

    #include <cv.h>
    #include <highgui.hpp>
    #include <core.hpp>

My additional include directories (Configuration Properties -> C\C++ -> General) are:

  • ...\OpenCV2.2\include\opencv2\highgui
  • ...\OpenCV2.2\include\opencv2\
  • ...\OpenCV2.2\include\opencv
  • ...\OpenCV2.2\include

The (...) are merely for my privacy, the actual code contains the full path.

My "Additional Dependencies" (Configuration Properties -> Linker -> Input) are:

  • "...\OpenCV 2.2.0\OpenCV2.2\lib\opencv_core220.lib"
  • "...\OpenCV 2.2.0\OpenCV2.2\lib\opencv_highgui220.lib"
Preview: (hide)

1 answer

Sort by » oldest newest most voted
0

answered Jul 6 '13

CodeFinder gravatar image

updated Jul 6 '13

Your code works fine for me. I've tested it on Linux (Ubuntu 12.04, 64 bit) with OpenCV 2.4.5.

Maybe the image file isn't located where the application expects it to be?

However, here are some recommendations:

  • Check the returned matrix of imread(). If image.empty() is true, OpenCV throws an exception (when showing the image with imshow()) which might causes the error you are facing. Alternativly, you can encapsulate your OpenCV code with try { ... } catch(cv::Exception& e) { std::cout << e.what() << std::endl; } to see if it shows any additional infos.

  • Your includes aren't the "typical way" of using OpenCV includes. Instead, you should use:

    • #include <opencv2/highgui/highgui.hpp>
    • #include <opencv2/core/core.hpp>
  • Including cv.h is not required here because you are using the C++ interface only.
  • The main() function should return a value. ;-)

Here's my Code:

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

int main( int argc, char** argv ) 
{
    try {
        Mat image;
        image = imread("../test.jpg");
        if (image.empty())
            return 1;
        namedWindow("k");
        imshow("k",image);
        waitKey(0);
    } catch(Exception& e) {
        std::cout << e.what() << std::endl;
        return 1;
    }
    return 0;
}

HTH

Preview: (hide)

Question Tools

Stats

Asked: Jul 5 '13

Seen: 3,674 times

Last updated: Jul 06 '13