Я использую 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.: Дело не в том, что мне нужно найти обходной путь, чтобы что-то сделать, я пытаюсь запустить пример кода, чтобы убедиться, что установка работает, но, по-видимому, это не так, если один пример программы запускается, а другой нет.