OpenCV是一個基於開源發行的跨平臺計算機視覺庫,它輕量級而且高效——由一系列 C 函數和少量 C++ 類構成,同時提供了Python、Ruby、MATLAB等語言的接口,實現了圖像處理和計算機視覺方面的很多通用算法。
工具/原料
Windows7
VMware Workstation 12 Pro
ubuntu-15.10
opencv-3.0.0.zip
一、安裝關聯庫
安裝編譯工具:
sudo apt-get install build-essential
編譯程序有了這個軟件,它才知道頭文件和庫函數在哪,最後才形成一個開發環境。
安裝 cmake、git、pkg-config等輔助工具:
sudo apt-get install cmake git pkg-config libgtk2.0-dev libavcodec-dev libavformat-dev libswscale-dev
安裝關聯庫:
sudo apt-get install python-dev python-opencv python-numpy libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libjasper-dev libdc1394-22-dev
二、編譯OpenCV
從網上下載OpenCV-3.0.0.zip。
下載地址:
如果使用虛擬機,最好將OpenCV-3.0.0.zip移動到用戶主目錄下進行編譯,一定不能在虛擬機在Windows系統裡的共享文件夾下進行編譯,否則會因為文件系統(Windows7的文件系統是NTFS,ubuntu-15.10的文件系統是)不同在編譯過程中出錯。鄙人在共享文件夾下進行編譯,編譯進行到%15時報錯,我修復後又在編譯進行到%21時報錯,反正是各種錯誤,我是沒有能力繼續修復了......
最好將OpenCV-3.0.0.zip移動到用戶主目錄下進行編譯:
mv [OpenCV-3.0.0.zip存放路徑] ~/opencv_3.0.0.zip
unzip opencv_3.0.0.zip
cd opencv-3.0.0
mkdir release
cd release
CMake是一個跨平臺的編譯工具,想深入學習cmake命令的可以百度一下。
編譯命令:
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 ..
make命令(-j表示用幾個線程來編譯,這樣可以加快編譯速度,不過這個與makefile的質量有關,有的工程用了-j會編譯出錯):
make -j $(nproc)
上述命令後一般大約要耗時1個小時,甚至更多,視個人電腦硬件配置而定。
執行完以後不要忘了make install:
sudo make install
如果編譯過程出錯後想要重新編譯,把release目錄下的CMakeCache.txt刪除掉即可。
三、設置環境變量
添加庫路徑:
sudo /bin/bash -c 'echo "/usr/local/lib" > /etc/ld.so.conf.d/opencv.conf'
更新系統庫:
sudo ldconfig
四、用cmake進行測試
DisplayImage.cpp中的源代碼:
#include
#include
using namespace cv;
int main(int argc, char** argv)
{
if ( argc != 2 )
{
printf("[usage]: %s
return -1;
}
Mat image;
image = imread( argv[1], 1 );
if ( !image.data )
{
printf("No image data!\n");
return -1;
}
namedWindow("Display Image", WINDOW_AUTOSIZE );
imshow("Display Image", image);
waitKey(0);
return 0;
}
CMakeLists.txt中的源代碼:
cmake_minimum_required(VERSION 2.8)
project( DisplayImage )
find_package( OpenCV REQUIRED )
add_executable( DisplayImage DisplayImage.cpp )
target_link_libraries( DisplayImage ${OpenCV_LIBS} )
編譯命令:
cmake .
make
運行命令:
./DisplayImage 01.jpg
五、用make進行測試
opencv_test.cpp中的源代碼:
#include "cv.h"
#include "highgui.h"
#include
using namespace std;
#define PICTURE "./01.jpg"
int main(void)
{
IplImage* img = cvLoadImage(PICTURE, 0);
cvNamedWindow( "test", 0 );
cvShowImage("test", img);
cvWaitKey(0);
cvReleaseImage( &img );
cvDestroyWindow( "test" );
return 0;
}
Makefile中的源代碼:
CXX = g++
CFLAGS = -Wall
LDFLAGS = `pkg-config --cflags --libs opencv`
SRCS = $(wildcard *.cpp)
TARGETS = $(patsubst %.cpp, %, $(SRCS))
all:$(TARGETS)
$(TARGETS):$(SRCS)
$(CXX) -o [email protected] $< $(LDFLAGS) $(CFLAGS)
clean:
-rm -rf $(TARGETS) *~ .*swp
.PHONY: clean all
編譯命令:
make
運行命令:
./opencv_test
代碼寫得比較簡單,所以顯示效果是一張黑白圖片。