raspberry pi 4 上Opencv-3.4.1編譯安裝與錯誤記錄


  最近買了一個raspberry Pi Camera v2,剛好有一個樹莓派4b,心血來潮就想利用樹莓派做一個人臉識別。

然后開始倒騰Opencv了,記錄一下肝出來的過程。

一.首先我用的是最新的Raspbian Buster系統,可以到官網(https://www.raspberrypi.org/downloads/raspberry-pi-os/)下載。

用的是python3.7。

1.安裝之前先更新一下環境

sudo apt-get update
sudo apt-get upgrade
sudo rpi-update

 

2.安裝一下必要的依賴

sudo apt-get install build-essential cmake pkg-config
sudo apt-get install libjpeg-dev libtiff5-dev libjasper-dev libpng12-dev
sudo apt-get install libavcodec-dev libavformat-dev libswscale-dev libv4l-dev
sudo apt-get install libxvidcore-dev libx264-dev
sudo apt-get install libgtk2.0-dev libgtk-3-dev
sudo apt-get install libatlas-base-dev gfortran

 

3.安裝開發工具(python3和pip)

sudo apt-get install python3 python3-setuptools python3-dev
wget https://bootstrap.pypa.io/get-pip.py
sudo python3 get-pip.py

 

4.下載OpenCV3.4.1和OpenCV-contrib的包

wget -O opencv.zip https://github.com/Itseez/opencv/archive/3.4.1.zip
wget -O opencv_contrib.zip https://github.com/Itseez/opencv_contrib/archive/3.4.1.zip
unzip opencv.zip
unzip opencv_contrib.zip 

下載完直接解壓,如果這樣下載比較慢的話,可以到網站直接下載。

 

5.安裝opencv需要的庫

sudo pip3 install numpy

 

6.開始進行編譯Opencv,一般編譯都是基於cmake

cd ~				# ~:指家目錄,一般是/home/pi
mkdir opencv
cd opencv	# 將下載好的opencv 
cd ~/opencv-3.4.1/
mkdir build
cd build
cmake -D CMAKE_BUILD_TYPE=RELEASE \
      -D CMAKE_INSTALL_PREFIX=/usr/local \
      -D INSTALL_C_EXAMPLES=ON \
      -D INSTALL_PYTHON_EXAMPLES=ON \
      -D OPENCV_EXTRA_MODULES_PATH=~/opencv/opencv_contrib-3.4.1/modules \
      -D ENABLE_PRECOMPILED_HEADERS=OFF \
      -D BUILD_EXAMPLES=ON ..

 增加swap空間

將swap大小從100MB增加到1024MB,可以方便OpenCV使用Pi的4個核進行編譯

vim /etc/dphys-swapfile

找到 CONF_SWAPSIZE 這個變量,將100改成1024,然后保存退出。使用如下命令重啟:

sudo /etc/init.d/dphys-swapfile stop
sudo /etc/init.d/dphys-swapfile start

 

7.編譯安裝opencv

這個過程比較漫長,而且碰到了很多錯誤,我大概編譯安裝了兩個多小時,編譯的過程還是很快樂的看着一直在編譯着。

make -j4
sudo make install
sudo ldconfig  

 編譯完成后記得 ,將swap大小從1024MB改回100MB

vim /etc/dphys-swapfile
sudo /etc/init.d/dphys-swapfile stop
sudo /etc/init.d/dphys-swapfile start

 

8.編譯完成測試

在命令行下輸入:python3,然后import cv2導入,如果導入成功不會有提示信息。接下來可以用cv2.__version__測試當前opencv的版本

 

 進入目錄opencv-3.4.1--samples--cpp--example_camke(編譯一下先cmke .. 再make )

最后./opencv_example

 

 這樣你就成功了

   

錯誤記錄

1.fatal error: boostdesc_bgm.i: 沒有那個文件或目錄 #include "boostdesc_bgm.i"

查閱資料是因為少了一些文件,如下

boostdesc_bgm.i
boostdesc_bgm_bi.i
boostdesc_bgm_hd.i
boostdesc_lbgm.i
boostdesc_binboost_064.i
boostdesc_binboost_128.i
boostdesc_binboost_256.i
vgg_generated_120.i
vgg_generated_64.i
vgg_generated_80.i
vgg_generated_48.i

下載這些文件,將這些文件放在相應的目錄下(/home/pi/opencv/opencv_contrib-3.4.1/modules/xfeatures2d/src)

資源下載

鏈接: https://pan.baidu.com/s/1XrQeLb5O2Kt1gA-QwCtPGg 

密碼: jpwp

 

2./home/pi/opencv/opencv-3.4.1/modules/stitching/include/opencv2/stitching/detail

  /matchers.hpp:52:12: fatal error: opencv2/xfeatures2d/cuda.hpp: 沒有那個文件或目錄

錯誤的原因是缺少cuda.hpp文件,這些文件在opencv_contrib-3.4.1/modules/xfeatures2d/include/opencv2目錄下,所以直接將這個目錄下的文件拷貝到opencv-3.4.1/modules/stitching/include/opencv2/即可

cp ~/opencv/opencv_contrib-3.4.1/modules/xfeatures2d/include/opencv2/* ~/opencv-3.4.1/modules/stitching/include/opencv2/ 

 這個過程中注意你自己的路徑,按照你自己的路徑去拷貝。

 

3.編譯到99%又死了,最后一個錯誤。

[modules/python2/CMakeFiles/opencv_python2.dir/__src2/cv2.cpp.o] Error 1

/home/pi/opencv/opencv-3.4.1/modules/python/src2/cv2.cpp:889:34: error: invalid conversion from ‘const char*’ to ‘char*’ [-fpermissive]

出錯是應為const char不能轉換為char。解決這個問題很簡單,就是將const char強制類型轉換為char,可是因為沒找到出錯的地方,所以幾次編譯都死在了這里了。

解決方法

vim ~/opencv/opencv-3.4.1/modules/python/src2/cv2.cpp

 

 

 

 原文鏈接:https://blog.csdn.net/simonforfuture/article/details/101716181

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM