2017-06-06 130 views
-2

試圖編譯一個非常簡單的程序來測試我最近安裝的OpenCV 3.2.0。我的程序opencvtest.cpp位於名爲cpp的文件夾中,該文件夾還包含opencv-3.2.0安裝目錄。編譯簡單的openCV項目

這是我的程序。

//Include file for every supported OpenCV function 
#include <opencv2/opencv.hpp> 

int main(int argc, char** argv) { 

    cv::Mat img = cv::imread(argv[1], -1); 

    if(img.empty()) return -1; 

    cv::namedWindow("Example 2-1", cv::WINDOW_AUTOSIZE); 
    cv::imshow("Example 2-1", img); 
    cv::waitKey(0); 
    cv::destroyWindow("Example 2-1"); 

    return 0; 
} 

在下面,我包括調用pkg配置,以顯示我使用什麼參數,我的實際G ++命令來嘗試和編譯我的文件。

asif.ahmed:~/cpp $ pkg-config opencv --cflags --libs 
-I/usr/include/opencv -I/usr/include/opencv2 -lopencv_calib3d -lopencv_imgproc -lopencv_contrib -lopencv_legacy -lopencv_core -lopencv_ml -lopencv_features2d -lopencv_objdetect -lopencv_flann -lopencv_video -lopencv_highgui 

asif.ahmed:~/cpp $ g++ opencvtest.cpp `pkg-config opencv --cflags --libs` -o main 
opencvtest.cpp:2:10: fatal error: 'opencv2/opencv.hpp' file not found 
#include <opencv2/opencv.hpp> 
     ^
1 error generated. 

任何人都可以提出什麼來得到這個編譯?我沒有很好的掌握編譯C++的命令行。

回答

1

檢查路徑opencv.hpp(真的是這樣嗎/usr/include/opencv2/opencv2/opencv.hpp) - 如果你使用-I/usr/include/opencv2也許你需要#include "opencv.hpp"代替#include <opencv2/opencv.hpp>,或者更好地利用-I/usr/include/#include "opencv2/opencv.hpp"

+0

我有/Users/asif.ahmed/cpp/opencv- 3.2.0/include/opencv和/Users/asif.ahmed/cpp/opencv-3.2.0/include/opencv2目錄,但沒有/ usr/include/opencv2或/ usr/include/opencv目錄。我可以將這些目錄複製到/ usr/include中嗎? – Asif

+0

無需複製,只需添加(替換'-I/usr/include/opencv2')編譯器的另一個選項'-I/Users/asif.ahmed/cpp/opencv-3.2.0/include /' – VolAnd

+0

不幸的是編譯命令'g ++ opencvtest.cpp -o hello -I/Users/asif.ahmed/cpp/opencv-3.2.0/include /'仍會返回一個致命錯誤:'opencv2/opencv_modules.hpp'找不到文件header – Asif