首頁 > 軟體

樹莓派學習筆記—— 原始碼方式安裝OpenCV

2020-06-16 17:32:04

0.前言

    本文介紹如何在樹莓派中通過編譯原始碼的方式安裝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 datan";
        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在樹莓派中執行正常。
 
圖1 執行結果

5.總結

樹莓派安裝opencv並不困難,陷阱不多但是耗時較長,需要保持足夠的耐心。

參考資料

本文永久更新連結地址http://www.linuxidc.com/Linux/2016-09/135510.htm


IT145.com E-mail:sddin#qq.com