修訂記錄 函數
- 2012.11.20修訂OpenCV 2.4+在CentOS安裝方法。
- 2012.11.21添加OpenCV 2的打開圖片的寫法。
預備 ui
- GCC
- CMake
- OpenCV
這些均可以在CentOS 6.0的「添加/刪除軟件」裏面找到並安裝。其餘Linux版本能夠選擇用編譯後安裝或者在Rpmfind尋找二進制安裝版本: spa
http://rpmfind.net/ .net
CentOS安裝OpenCV 2.4+ code
cd /home/me/opencv/ blog
cmake . 圖片
make get
make check string
make install it
寫一個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
你就能看到圖片了: