網上雖然有比較詳細的教程,但自己在按照別人的方法一步步進行時,還是出現了很多問題,如:
1,g++ -o hello hello.cpp 'pkg-config --cfalgs --libs'與g++ 'pkg-config --cfalgs --libs‘ hello.cpp -o hello 連接庫順序的問題
采用g++ 'pkg-config --cfalgs --libs‘ hello.cpp -o hello 會產生opencv函數為定義的問題:
undefined reference to `cv::namedWindow(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, int)'
hello.cpp:(.text+0x9b): undefined reference to `cv::imread(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, int)'
采用g++ -o hello hello.cpp 'pkg-config --cfalgs --libs'則正常編譯
2,注意要安裝所需要的軟件包,下面參考文章裡很詳細,用 sudo apt-get install 命令一個個安上就可以了
3,沒弄清楚opencv安裝位置
因為第一此用ubuntu系統,配置opencv基本上按照教程一步步進行的,具體什麼意思和用途並不了解,折騰了一天解決了出現的問題後,基本上理解了opencv的配置,也學會了很多linux的知識。回到話題,opencv 的安裝位置在/usr/local,那裡可以找到opencv和opencv2這兩個文件夾
4,/usr/etc和/home/etc是不一樣的,usr主要是系統文件配置,而/hom則是對用戶文件的配置
測試程序
#include <iostream> #include <opencv2/core/core.hpp> #include <opencv2/highgui/highgui.hpp> #include <opencv2/imgproc/imgproc.hpp> using namespace cv; using namespace std; int main() { namedWindow( "src"); Mat img = imread( "/home/xinliwei/lena.jpg" ); if(!img.data) { cout<<"file not fount"<<endl; return 1; } else { imshow( "src", img ); waitKey(); return 0; } }具體配置步驟如參考教程:1,http://www.samontab.com/web/2010/04/installing-opencv-2-1-in-ubuntu/
2,http://www.cnblogs.com/emouse/archive/2013/02/22/2922940.html