0.前言php
本文介紹怎樣在樹莓派中經過編譯源碼的方式安裝opencv,並經過一個簡單的樣例說明怎樣使用opencv。
1.下載若干依賴項
sudo apt-get update
請依次安裝下面依賴項,這些必須安裝的依賴項來自於opencv官網的說明,在多數debian系統中都可以採用這樣的方式進行安裝。事實上在樹莓派中
build-essential已經默認安裝,但是cmake等其它內容仍需要手動安裝。
sudo apt-get install build-essential
sudo apt-get install cmake
sudo apt-get install libgtk2.0-dev
sudo apt-get install pkg-config
sudo apt-get install python-dev python-numpy
sudo apt-get install libavcodec-dev libavformat-dev libswscale-dev libjpeg-dev libpng-dev libtiff-dev libjasper-dev
2.得到源碼
在樹莓派用戶文件夾中創建opencv文件夾
mkdir opencv
經過sourceforge站點獲取opencv源碼,本文選擇2.4.9版本號。下載過程可能比較緩慢,請耐心等待。
wget http://sourceforge.net/projects/opencvlibrary/files/opencv-unix/2.4.9/opencv-2.4.9.zip/download opencv-2.4.9.zip
解壓源碼。得到一個名爲opencv-2.4.9的文件夾
unzip opencv-2.4.9.zip
3.編譯源碼
進入opencv源碼文件夾,在該文件夾中新建一個名爲release的文件夾。
cd ~/opencv/opencv-2.4.9
mkdir release
cd release
使用cmake工具在該文件夾中生成makefile文件,指定opencv的安裝文件夾爲
/usr/local,opencv的源碼位於上一層文件夾。
cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local ..
編譯源碼並安裝(編譯源碼的時間很的長,make以後我便睡去,次日早上才運行install)
make
sudo make install
更新搜索動態連接庫
sudo ldconfig
4.演示樣例
【C++】
——經過代碼加載一張圖片。經過opencv把彩色圖片轉換爲黑白圖片。並把原圖和轉換後的圖片輸出到屏幕中。
#include <opencv2/core/core.hpp>
#include <opencv2/imgproc/imgproc.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <iostream>
using namespace cv;
using namespace std;
int main (int argc, char **argv)
{
Mat image, image_gray;
image = imread(argv[1], CV_LOAD_IMAGE_COLOR );
if (argc != 2 || !image.data) {
cout << "No image data\n";
return -1;
}
cvtColor(image, image_gray, CV_RGB2GRAY);
namedWindow("image", CV_WINDOW_AUTOSIZE);
namedWindow("image gray", CV_WINDOW_AUTOSIZE);
imshow("image", image);
imshow("image gray", image_gray);
waitKey(0);
return 0;
}
【makefile】
INCLUDE = $(shell pkg-config --cflags opencv)
LIBS = $(shell pkg-config --libs opencv)
SOURCES = test.cpp
# 目標文件
OBJECTS = $(SOURCES:.cpp=.o)
# 可運行文件
TARGET = test
$(TARGET):$(OBJECTS)
g++ -o $(TARGET) $(OBJECTS) -I $(INCLUDE) $(LIBS)
$(OBJECTS):$(SOURCES)
g++ -c $(SOURCES)
clean:
rm $(OBJECTS) $(TARGET)
# 編譯規則 $@表明目標文件 $< 表明第一個依賴文件
%.o:%.cpp
g++ -I $(INCLUDE) -o $@ -c $<
【簡要說明】
經過
pkg-config --cflags opencv 得到opencv相關頭文件路徑,經過
pkg-config --libs opencv得到opencv擴展庫
【編譯並運行】
make
./test raspberry.jpg
演示樣例中加載一張名爲raspberry.jpg圖片。在該演示樣例中,圖片和可運行文件test應在同一個文件夾中。
運行結果例如如下圖所看到的,左側爲原始圖片,右側爲轉換後的圖片。選擇的圖片色彩不夠豐富。彩色圖片和黑白圖片的對照不夠強烈,但也可證實opencv在樹莓派中運行正常。python
圖1 運行結果
5.總結
樹莓派安裝opencv並不困難。陷阱很少但是耗時較長,需要保持足夠的耐心。
參考資料