OpenCV в VS10: ошибка утверждения с функцией imread()

Я использую OpenCV 2.4.9 в Visual Studio 2010 и пытаюсь запустить простой исходный код, представленный на учебном веб-сайте:

#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <iostream>

using namespace cv;
using namespace std;

int main( int argc, char** argv )
{
    if( argc != 2)
    {
     cout <<" Usage: display_image ImageToLoadAndDisplay" << endl;
     return -1;
    }

    Mat image;
    image = imread(argv[1], CV_LOAD_IMAGE_COLOR);   // Read the file

    if(! image.data )                              // Check for invalid input
    {
        cout <<  "Could not open or find the image" << std::endl ;
        cout << argv[1] << std::endl;
        return -1;
    }

    namedWindow( "Display window", WINDOW_AUTOSIZE );// Create a window for display.
    imshow( "Display window", image );                   // Show our image inside it.

    waitKey(0);                                          // Wait for a keystroke in the window
    return 0;
}

Однако, когда я пытаюсь запустить исполняемый файл (и закомментировать это выражение if), я получаю: Утверждение не выполнено (size.width> 0 && size.height> 0) в cv:: imshow ...... (путь к файлу)

Я просмотрел почти все связанные темы, которые я нашел здесь. Путь к файлу правильный, я его распечатал и даже переместил исполняемый файл и jpg в одну папку.

Кроме того, этот пример кода из другого учебника делает то же самое безупречно, поэтому я сомневаюсь, что это ошибка конфигурации проекта, но не уверен:

#include <opencv2/opencv.hpp>
using namespace cv;

int main()
{
    IplImage *img = cvLoadImage("C:\\Users\\bomoon\\Documents\\Koala.jpg", 1);

    cvNamedWindow("test");
    cvShowImage("test", img);
    cvWaitKey(0);

    cvReleaseImage(&img);
    cvDestroyWindow("test");
    return 0;
}

Может ли кто-нибудь объяснить, почему вторая программа работает, а первая нет, и как я могу исправить первую?

P.S.: Дело не в том, что мне нужно найти обходной путь, чтобы что-то сделать, я пытаюсь запустить пример кода, чтобы убедиться, что установка работает, но, по-видимому, это не так, если один пример программы запускается, а другой нет.


person Booley    schedule 12.06.2014    source источник
comment
Должен уточнить, это в отладочной версии с отладочными библиотеками; ошибка (которая была повторно введена в 2.4.8, поэтому не уверена, что она уже исправлена) существует только для версии Release, но в версии Debug этой ошибки нет.   -  person Booley    schedule 12.06.2014
comment
Вы также можете проверить эти связанные вопросы. Вероятно, вы ссылаетесь на неправильные библиотеки DLL.   -  person Aurelius    schedule 12.06.2014
comment
Я прочитал все эти сообщения, они касаются смешивания библиотек выпуска в режиме отладки при создании решения. Я проверил в своем листе свойств, что все каталоги включения и библиотеки, а также дополнительные зависимости являются отладочными версиями.   -  person Booley    schedule 12.06.2014
comment
Вы убедились, что используете правильные 32- или 64-разрядные версии? Это может быть еще один фактор.   -  person Aurelius    schedule 12.06.2014
comment
Да, я скомпилировал библиотеку OpenCV с помощью CMake под 64-битным собственным компилятором Visual Studio 10. Я также запускаю код в режиме отладки x64 (в 64-разрядной версии Windows 7). Я проверил все свои пути, но я все еще недоволен тем, почему один код работает, а другой нет.   -  person Booley    schedule 12.06.2014