[操 作 系 統] Ubuntu 14.04 LTS
[OpenCV版本] 3.0.0-beta
[Eclipse 版 本] 3.8.1
需要知識:
- Linux系統shell命令基礎
- 編譯原理基礎知識,預編譯->編譯->匯編->鏈接
- make 、cmake知識
- IDE使用經驗
- gcc,g++編譯器知識
一、編譯安裝opencv3.0
1. 准備環境
直接編譯安裝opencv一般是會報錯的,有很多依賴工具需要先安裝。主要是:cmake, build-essential, pkg-config, python-dev, python-numpy等,視自己情況而定。
$ sudo apt-get install build-essential cmake libopencv-dev libgtk2.0-dev pkg-config python-dev python-numpy
2. 下載opencv3.0源碼
直接去opencv.org(github) 上下載linux源碼包:
$ wget https://github.com/Itseez/opencv/archive/3.0.0-beta.zip
3. 解壓組織、編譯、安裝
解壓文件,新建一個文件夾用於安放編譯結果,然后安裝(選擇安裝在/usr/local下面)
$ unzip opencv-3.0.0-beta.zip $ cd opencv-3.0.0-beta $ mkdir release $ cd release $ cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D WITH_TBB=ON -D BUILD_NEW_PYTHON_SUPPORT=ON -D WITH_V4L=ON
-D WITH_QT=ON -D WITH_OPENGL=ON .. //注意CMakeList.txt在上一層文件夾 $ make -j $(nproc) // make -j 多核處理器進行編譯(默認的make只用一核,很慢),$(nproc)返回自己機器的核數 $ make install //把編譯結果安裝到 /usr/local的 lib/ 和 include/下面
4. 環境配置
可編輯文本配置部分:/etc/ld.so.conf.d/ 添加 opencv.conf 文件,記錄庫安裝位置;更新配置
$ cd /etc/ld.so.conf.d $ sudo vi opencv.config // insert "/usr/local/lib" :q $ sudo ldconfig
有的地方說,需要配置/etc/bash.bashrc 中PKG_CONFIG_PATH 環境變量,貌似不需要。
(貌似,上面的opencv.conf都不用配置。只要 make install 就會在/usr/local/lib/pkgconfig下面產生opencv.pr的包含、鏈接配置)。
檢查包含、鏈接配置是否正確:
$ pkg-config opencv --cflags --libs $ -I/usr/local/include/opencv -I/usr/local/include /usr/local/lib/libopencv_calib3d.so /usr/local/lib/libopencv_core.so /usr/local/lib/libopencv_features2d.so /usr/local/lib/libopencv_flann.so /usr/local/lib/libopencv_highgui.so /usr/local/lib/libopencv_imgcodecs.so /usr/local/lib/libopencv_imgproc.so /usr/local/l ib/libopencv_ml.so /usr/local/lib/libopencv_objdetect.so /usr/local/lib/libopencv_photo.so /usr/local/lib/libopencv_shape.so /usr/local/lib/libopencv_stitch ing.so /usr/local/lib/libopencv_superres.so /usr/local/lib/libopencv_ts.a /usr/local/lib/libopencv_video.so /usr/local/lib/libopencv_videoio.so /usr/local/l ib/libopencv_videostab.so
二、使用opencv庫
1. 命令行形式
直接編寫C 或者C++ 程序,然后分別用gcc,g++編譯器生成可執行程序。
1) C程序版:
#include <highgui.h> int main(int argc, char **argv) { IplImage* img = cvLoadImage(argv[1],CV_LOAD_IMAGE_COLOR); cvNamedWindow("Image_show",CV_WINDOW_AUTOSIZE); cvShowImage("Image_show",img); cvWaitKey(0); cvReleaseImage(&img); cvDestroyWindow("Image_show"); return 0; }
編譯過程:
$ gcc test.c -o test `pkg-config opencv --cflags --libs`
2) C++程序版:
#include <opencv2/opencv.hpp> using namespace cv; int main( int argc, char** argv ) { Mat image; image = imread( argv[1], 1 ); if( argc != 2 || !image.data ) { printf( "No image data \n" ); return -1; } namedWindow( "Display Image", WINDOW_AUTOSIZE ); imshow( "Display Image", image ); waitKey(0); return 0; }
編譯過程:
$ g++ first.cpp -o first `pkg-config opencv --cflags --libs` // 包含、鏈接參數一定要放在后面
2. CMake運行形式
cmake 是先將程序所需的依賴、原料組織起來,產生Makefile,然后在又make來編譯生成可執行程序。最重要的就是編寫CMakeList.txt文件。以上文C++程序為例,CMakeList.txt為:
cmake_minimum_required(VERSION 2.8) project( first ) find_package( OpenCV REQUIRED ) add_executable( first frist.cpp ) target_link_libraries( first ${OpenCV_LIBS} )
然后,CMake,再make:
$ cmake . $ make $ ./first
3. IDE開發工具
在IDE工具(如VS,Eclipse)中利用opencv庫,和以上兩種方法考慮的地方一樣,都是要配置好include 和 lib 部分。
具體Ubuntu下用Eclipse的方法,下面繼續。
三、eclipse下C++開發環境
1. 安裝eclipse
Ubuntu下安裝很簡單,直接在software center里就有。或者直接命令行apt-get install
2. 配置C++開發環境
打開eclipse,在help 菜單下選擇 Install new software。打開的install對話框中,work with下拉菜單選擇Indigo Update Site - http://download.eclipse.org/releases/indigo/源。網絡刷新后:
1) Collaboration中選擇Mylyn Context Connector:C\C++ Development組件,然后安裝,重啟eclipse;
2) 繼續回到install對話框,在Programming Language中選擇C\C++相關的組件,如Development Tools,Development Tools SDK,CDT Visual C++ Support等。
安裝好以上組件之后,就可以在eclipse里面新建C++工程。
3. opencv實踐
1) 新建一個空的C++工程,然后添加source folder,source file;將上文的C++讀圖代碼拷貝進去。這時肯定會提示有很多問題,編譯肯定出錯。
2) 接下來就是配置好包含文件和鏈接庫。右擊project explorer里面的工程,打開properties,點開C\C++ Build選項,再點擊設置Setting。
a) 設置包含include。在GCC C++ Compiler下面的includes里面添加include path:/usr/local/include,/usr/local/include/opencv,/usr/local/include/opencv(視自己的代碼選擇include,保險的話,三個都設置上)。
b) 設置鏈接庫。 在GCC C++ Linker下面的Libraries里面,先添加search path為:/usr/local/lib;然后逐個在Libraries中添加opencv_core, opencv_highgui, opencv_imgproc, opencv_imgcodes(貌似是新多出來的一個,不加要報錯)。
3) 配置完畢,project --> Build All。另外說明,如果用IDE里面的屬性來添加程序參數,文件路徑名最好用絕對路徑(其當前路徑應該為你的項目一級目錄,跟據這個設相對路徑亦可)。
Reference:
[1] Rodrigo Berriel's website: http://rodrigoberriel.com/2014/10/installing-opencv-3-0-0-on-ubuntu-14-04/
[2] Using OpenCV with Eclipse: http://docs.opencv.org/doc/tutorials/introduction/linux_eclipse/linux_eclipse.html
