2021-05-12 14:32:11
樹莓派學習筆記—— 原始碼方式安裝OpenCV
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; }
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 $<
【簡要說明】
【編譯並執行】
5.總結
參考資料
本文永久更新連結地址:http://www.linuxidc.com/Linux/2016-09/135510.htm
相關文章