修訂記錄
- 2012.11.20修訂OpenCV 2.4+在CentOS安裝方法。
- 2012.11.21添加OpenCV 2的打開圖片的寫法。
預備
- GCC
- CMake
- OpenCV
這些都可以在CentOS 6.0的“添加/刪除軟件”里面找到並安裝。其他Linux版本可以選擇用編譯后安裝或者在Rpmfind尋找二進制安裝版本:
CentOS安裝OpenCV 2.4+
- 下載OpenCV 2.4+壓縮包解壓到一個文件夾里,如:/home/me/opencv/
- 構建Makefile,在終端輸入,進行構建:
cd /home/me/opencv/
cmake .
- 進行編譯並安裝,編譯過程可能有些警告發生,請無視這些警告:
make
make check
make install
寫一個OpenCV程序
新建一個簡單的程序,例如:DisplayImage.cpp。
#include <stdio.h> #include <cv.h> #include <highgui.h> //使用cv這個命名空間 using namespace cv; /* 主函數 *C語言規定main函數只能有兩個參數, *習慣上將這兩個參數寫成argc和argv。 *第一個代表(傳參個數+1), *第二個代表傳慘數據。 *一般有兩種寫法: *main( int argc, char* argv[]) *main( int argc, char** argv) */ int main( int argc, char** argv ) { //建立一個Mat類型的變量image Mat image; /* API中有: * C++: Mat imread(const string& filename, int flags=1 ) * 意思是返回Mat類型數據,第一個參數接受一個string類型的引用, * 第二個參數接受一個int類型的flags,一般都是1。 */ image = imread( argv[1], 1 ); //當傳的參數不是一個,或者圖片沒有數據則提示沒有圖片並退出程序 if( argc != 2 || !image.data ) { printf( "沒有該圖片 \n" ); return -1; } //C++: void namedWindow(const string& winname, int flags=CV_WINDOW_AUTOSIZE ) namedWindow( "顯示圖片", CV_WINDOW_AUTOSIZE ); //C++: void imshow(const string& winname, InputArray mat) imshow( "顯示圖片", image ); //C++: int waitKey(int delay=0) waitKey(0); return 0; }
新的頭文件寫法
同樣的程序,可以用新的頭文件寫法來寫:
#include "opencv2/core/core.hpp" #include "opencv2/highgui/highgui.hpp" #include <stdio.h> using namespace cv; int main( int argc, char** argv ){ Mat image; image = imread( argv[1]); if( argc != 2 || !image.data ){ printf("沒有圖片\n"); return -1; } namedWindow( "顯示圖片", CV_WINDOW_AUTOSIZE ); imshow( "顯示圖片", image ); waitKey(0); return 0; }
創建一個對應的CMake文件
新建一個CMakeLists.txt,內容大概是這樣的:
project( DisplayImage )
find_package( OpenCV REQUIRED )
add_executable( DisplayImage DisplayImage )
target_link_libraries( DisplayImage ${OpenCV_LIBS} )
生成可執行文件
cd <DisplayImage_directory>
cmake .
make
結果
生成了一個DisplayImage文件,所以運行這個文件,將文件路徑傳進去:
./DisplayImage lena.jpg
你就能看到圖片了:
被山寨的原文
Using OpenCV with gcc and CMake . OpenCv.org