Mingw-64 не будет компилировать код openCV после сборки и установки - PullRequest
0 голосов
/ 12 февраля 2020

Я собрал и установил openCV, используя Cmake и mingw32-make. После этого я скопировал созданную исходную папку «opencv2» в папку «include» моего установленного компилятора mingw-64. Затем я скопировал полученные файлы из "lib" и "bin" в соответствующие папки моего установленного компилятора. Наконец, я попытался скомпилировать следующий пример кода для обеспечения правильной установки:

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

using namespace cv;

int main()
{
    Mat image;// new blank image
    image = cv::imread("test.png", 0);// read the file
    namedWindow( "Display window", CV_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;
}

Я попытался скомпилировать код с помощью следующей команды командной строки:

g++ -o helloWorld helloWorld.cpp

, которая вызвала следующую ошибку :

helloWorld.cpp: In function 'int main()':
helloWorld.cpp:10:36: error: 'CV_WINDOW_AUTOSIZE' was not declared in this scope
     namedWindow( "Display window", CV_WINDOW_AUTOSIZE );// create a window for display.

Я подозреваю, что неправильно установил openCV, но когда я ищу учебники в Интернете для решения этой проблемы, это касается только использования кодовых блоков с mingw. Я только wi sh использовать mingw, а не кодовые блоки.

Есть ли опции компоновщика, которые мне не хватает? Разве я поставил ".dll" и ".dll.a" в неправильном месте?

Спасибо

1 Ответ

0 голосов
/ 13 февраля 2020

OpenCV действительно был установлен правильно, проблема была в том, что CV_WINDOW_AUTOSIZE является константой, используемой C реализацией openCV. Когда меняли местами с WINDOW_AUTOSIZE, код уведомлял меня, что я не связал нужные библиотеки. Для openCV 4.2.0 мне нужно было добавить «420» в конец необходимых библиотек (например: «-lopencv_core420»).

Аргументы командной строки для компиляции после внесения этих изменений:

g++ -o helloWorld helloWorld.cpp -lopencv_core420 -lopencv_highgui420 -lopencv_imgcodecs420
...