樹莓派2+OpenCV環境搭建
阿新 • • 發佈:2019-01-09
一,環境搭建
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許可權執行。
執行結果