Linux 中使用 OpenCV

修訂記錄 函數

  • 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

  • 下載OpenCV 2.4+壓縮包解壓到一個文件夾裏,如:/home/me/opencv/
  • 構建Makefile,在終端輸入,進行構建:

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

你就能看到圖片了:

相關文章
相關標籤/搜索