OpenCV привет мир не компилируется как надо - PullRequest
2 голосов
/ 21 сентября 2011

Я настраиваю новую машину с OpenCV 2.3.1. На машине установлен Windows 7, и я следовал инструкциям по установке, приведенным на сайте OpenCV (для сборки использовался CMake с MinGW).

Вот мой код:

#include <iostream>
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
int main() {
    char var;
    cv::Mat img;
    img = cv::imread("C:/test/img.jpg");
    cv::namedWindow("Image");
    cv::imshow("Image", img);
    std::cin >> var;
    return 1;
}

Вот моя команда make:

g++ -o main main.cpp -lopencv_core -lopencv_imgproc -lopencv_calib3d -lopencv_video -lopencv_features2d -lopencv_ml -lopencv_highgui -lopencv_objdetect -lopencv_contrib -lopencv_legacy

Вот мой путь:

C:\OpenCV-2.3.1\install\bin;C:\OpenCV-2.3.1\install\include;C:\QtSDK\QtCreator\bin;C:\Program Files (x86)\MiKTeX 2.9\miktex\bin;%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;%SYSTEMROOT%\System32\WindowsPowerShell\v1.0\;C:\Program Files (x86)\CMake 2.8\bin;C:\QtSDK\mingw\bin;

Вот моя ошибка:

main.cpp:2:33: error: opencv2/core/core.hpp: No such file or directory
main.cpp:3:39: error: opencv2/highgui/highgui.hpp: No such file or directory
main.cpp: In function 'int main()':
main.cpp:8: error: 'cv' has not been declared
main.cpp:8: error: expected ';' before 'img'
main.cpp:9: error: 'img' was not declared in this scope
main.cpp:9: error: 'cv' has not been declared
main.cpp:10: error: 'cv' has not been declared
main.cpp:11: error: 'cv' has not been declared

Это не имеет смысла. Почему это не скомпилируется? Почему он не может найти opencv2 / core / core.hpp?

Ответы [ 3 ]

2 голосов
/ 21 сентября 2011

g++ не учитывает %PATH% ($PATH в Unix) при поиске включаемых файлов.

Добавьте в команду компиляции следующее: -IC:\OpenCV-2.3.1\install\include:

g++ -IC:\OpenCV-2.3.1\install\include -o main main.cpp -lopencv_core ...
0 голосов
/ 21 октября 2013

в Unix, как OS

     g++ filename.cpp -o exec `pkg-config opencv cvblob --libs --cflags`

(cvblob необязательно, если вы проверяете на blob)

0 голосов
/ 21 сентября 2011

Вы не включили правильные каталоги OpenCV.

Я установил предыдущую версию OpenCV в C:\OpenCV2.3, и это пути, которые мне пришлось добавить для моего компилятора, чтобы найти заголовки:

C:\OpenCV2.3\build\include\opencv

C:\OpenCV2.3\build\include\opencv2

C:\OpenCV2.3\build\include

Традиционно, g ++ берет каталоги заголовков с флагом -I, который вы, похоже, не используете вообще.

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