Невозможно запустить Opencv с синтаксисом C ++ - PullRequest
3 голосов
/ 23 октября 2011
  • Я использую Opencv 2.3.1 в Visual studio 2010 (vc10)
  • Я настроил opencv на основе многих руководств и могу скомпилировать и запустить программу C-синтаксиса, например:

</p> <pre><code>#include "StdAfx.h" #include <iostream> #include <opencv2/opencv.hpp> using namespace std; using namespace cv; int main () { IplImage* img = cvLoadImage("D:\cat_helmet.jpg", CV_LOAD_IMAGE_UNCHANGED); cvNamedWindow("display", CV_WINDOW_AUTOSIZE); cvShowImage("display", img ); cvWaitKey(0); return 0; }

Однако я не могу запустить программу синтаксиса C ++, такую ​​как </p> <pre><code>#include "StdAfx.h" #include <opencv2/core/core.hpp> #include <opencv2/highgui/highgui.hpp> #include <iostream> using namespace cv; using namespace std; int main( ) { namedWindow( "Display window", CV_WINDOW_AUTOSIZE ); Mat image; image = imread("D:\cat_helmet", CV_LOAD_IMAGE_COLOR); if(! image.data ) { cout << "Could not open or find the image" << std::endl ; return -1; } imshow( "Display window", image ); waitKey(0); return 0; }

Iполучил сообщения об ошибках (в вызовах функций: namedWindow , imread , imshow )

First-chance exception at 0x5361fcc3 in FirstOpencv2.3.exe: 0xC0000005: Access violation reading location 0x2079616c.

Unhandled exception at 0x5361fcc3 in FirstOpencv2.3.exe: 0xC0000005: Access violation reading location 0x2079616c.

Как я могу это исправить?

Ответы [ 2 ]

5 голосов
/ 25 ноября 2011

Вы говорите, что вы прошли множество руководств и учебных пособий. У меня был большой успех с этим http://www.anlak.com/using-opencv-2-3-1-with-visual-studio-2010-tutorial/

Дело в том, что этот парень проведет вас по «парку» и поможет вам разобраться с двумя основными проблемами при настройке OpenCV 2.3.1; Одним из них является размещение DLL-файлов в папке вашего проекта. Другой - отсутствующий .dll 'tbb_debug.dll' (отсутствие этого .dll считается ошибкой в ​​OpenCV 2.3.1).

Он также предоставляет несколько приличных фрагментов кода, которые вы можете попробовать (в синтаксисе c ++).

Удачи.

0 голосов
/ 27 марта 2013

Вышеупомянутые ответы не имеют смысла. Я тоже сталкиваюсь с той же проблемой. Основной причиной этого исключения является то, что вы пытаетесь отобразить изображение (прочитанное imread), которое является пустым. Основной проблемой в программе является строка

    image = imread("D:\cat_helmet", CV_LOAD_IMAGE_COLOR); 

Я думаю, что imread-функция ведет себя не так, как ожидается. Еще одна вещь, при просмотре ссылок я наткнулся на следующую ссылку:

http://docs.opencv.org/modules/highgui/doc/reading_and_writing_images_and_video.html?highlight=imread#Mat imread (константная строка и имя файла, int flags)

Здесь imread используется посредством вызова методом ссылки. Я не эксперт по C ++, но я чувствую, что это может быть проблемой.

    int main() 
    {
      std::string imgPath("splash.bmp"); //Add your file name
      Mat img = imread(imgPath);
      namedWindow( "Example1", WINDOW_AUTOSIZE);
      imshow("Example1", img);
      waitKey(0);
      return 0;
    }

Этот код работал для меня. Кроме того, я поместил файл рядом с исполняемым файлом, чтобы уменьшить сложность.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...