1. 程式人生 > >樹莓派2+OpenCV環境搭建

樹莓派2+OpenCV環境搭建

一,環境搭建

1、安裝所需的安裝工具和包:

# sudo apt-get install build-essential cmake pkg-config

build-essential 和 pkg-config可能都已經安裝。以防萬一,我們還是將它們鍵入apt-get命令中。

2、安裝必要的影象I/O包,這樣才可以讀入JPEG,PNG,TIFF等這些格式的影象。

# sudo apt-get install libjpeg8-dev libtiff4-dev libjasper-dev libpng12-dev

3、安裝GTK開發庫,這個庫用來構建GUI。同時OpenCV中的highgui庫也需要它來在螢幕上顯示影象。

# sudo apt-get install libgtk2.0-dev

4、安裝必要的視訊I/O包,OpenCV需要它們來讀入視訊檔案。

# sudo apt-get install libavcodec-dev libavformat-dev libswscale-dev libv4l-dev

5、安裝OpenCV優化操作時所需庫。

# sudo apt-get install libatlas-base-dev gfortran

6、下載和解壓OpenCV(如果已經下載好了,通過U盤傳到樹莓派,注意U盤是掛載在/media目錄下)

# wget -O opencv-2.4.9.zip http://sourceforge.net/projects/opencvlibrary/files/opencv-unix/2.4.9/opencv-2.4.9.zip/download
# unzip opencv-2.4.9.zip # cd opencv-2.4.9

7、安裝open

# sudo mkdir build
# cd build
# sudo cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D BUILD_NEW_PYTHON_SUPPORT=ON -D INSTALL_C_EXAMPLES=ON -D INSTALL_PYTHON_EXAMPLES=ON -D BUILD_EXAMPLES=ON ..

8、編譯OpenCV

# sudo make
# sudo make install

9、更新搜尋動態連結庫

#sudo ldconfig

二、測試

通過程式碼載入一張圖片,通過opencv把彩色圖片轉換為黑白圖片,並把原圖和轉換後的圖片輸出到螢幕中。

test.cpp

#include <opencv2/core/core.hpp>
#include <opencv2/imgproc/imgproc.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <iostream>

using namespace std;
using namespace cv;

int main (int argc, char **argv)
{
    Mat image, image_gray;

    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)
# 編譯規則 [email protected]代表目標檔案 $< 代表第一個依賴檔案
%.o:%.cpp
    g++ -I $(INCLUDE) -o [email protected] -c $<

編譯並執行,載入一張名為lena.jpg圖片,圖片和可執行檔案test應在同一個目錄中,如下圖所示

#sudo make
#sudo ./test lena.jpg

這裡寫圖片描述

執行過程中還出現了兩個問題

問題一:

這裡寫圖片描述

這是由於我在編寫這個檔案的時候,9行前面用的是4個空格符,而不是tab,所以造成了操作符丟失的錯誤。只需把縮排的空格delete掉,然後按tab鍵用tab代替4個空格,問題就可能解決。

問題二:

這裡寫圖片描述

這裡寫圖片描述

這是因為Xserver預設情況下不允許別的使用者的圖形程式的圖形顯示在當前螢幕上. 如果需要別的使用者的圖形顯示在當前螢幕上, 則應以當前登陸的使用者, 也就是切換身份前的使用者執行如下命令。

#xhost +

通過執行這條命令,就授予了其它使用者訪問當前螢幕的許可權,於是就可以以另外的使用者執行需要執行的程式了,最簡單的辦法就是用root許可權執行。

執行結果

這裡寫圖片描述