樹莓派4B安裝opencv(python + C++)


原文鏈接:https://blog.csdn.net/weixin_46032860/article/details/117425830

一、安裝依賴

sudo apt-get install build-essential cmake git unzip pkg-config
sudo apt-get install libjpeg-dev libpng-dev libtiff-dev
sudo apt-get install libavcodec-dev libavformat-dev libswscale-dev
sudo apt-get install libgtk2.0-dev libcanberra-gtk*
sudo apt-get install libxvidcore-dev libx264-dev libgtk-3-dev
sudo apt-get install python3-dev python3-numpy python3-pip
sudo apt-get install python-dev python-numpy
sudo apt-get install libtbb2 libtbb-dev libdc1394-22-dev
sudo apt-get install libv4l-dev v4l-utils
sudo apt-get install libjasper-dev libopenblas-dev libatlas-base-dev libblas-dev
sudo apt-get install liblapack-dev gfortran
sudo apt-get install gcc-arm*
sudo apt-get install protobuf-compiler

提示是否需要繼續就一直y就可以,這13個包下載完大概需要30分鍾

三、獲取源碼Opencv和第三方庫
安裝完依賴后,下載OpenCV,這里需要下載兩個,一個是OpenCV另一個是第三方庫,解壓。

下載我是用的WinSCP,連接后SSH上傳,源碼下載有時候因為網絡的限制會下載不全。

#下載源碼和第三方庫
cd ~
wget -O opencv.zip https://github.com/opencv/opencv/archive/4.2.0.zip
wget -O opencv_contrib.zip https://github.com/opencv/opencv_contrib/archive/4.2.0.zip

#解壓
unzip opencv.zip
unzip opencv_contrib.zip

對解壓的文件進行重命名:

mv opencv-4.2.0 opencv
mv opencv_contrib-4.2.0 opencv_contrib

 

解壓完后記得還需要一個步驟添加缺失的11個文件,不然會報錯。
下載后,直接拷貝源碼並生存同名文件,放在 opencv_contrib/modules/xfeatures2d/src/ 路徑下即可。

#錯誤提示
~/opencv_contrib/modules/xfeatures2d/src/boostdesc.cpp:673:20: fatal error: boostdesc_bgm.i: No such file or directory

下載鏈接: [boostdesc_bgm.i,vgg_generated_48.i等.rar] 1(https://files.cnblogs.com/files/arxive/boostdesc_bgm.i%2Cvgg_generated_48.i%E7%AD%89.rar)


四、創建虛擬環境
安裝之前首先要確定python版本,在2020年以后官方不在對python2進行支持,所以要使用python3,將python的添加到系統環境變量處,方式如下:

# get version
python3 --version

# get location
which python3

# merge VIRTUALENVWRAPPER_PYTHON=location/version
echo "export VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3" >> ~/.bashrc

# reload profile
source ~/.bashrc

上面的python命令為/usr/bin/python3,也是其路徑。創建好環境變量,安裝虛擬環境:

#安裝虛擬環境

sudo pip3 install virtualenv
sudo pip3 install virtualenvwrapper

#將虛擬環境添加到系統變量。然后創建虛擬環境。

echo "export WORKON_HOME=$HOME/.virtualenvs" >> ~/.bashrc
echo "source /usr/local/bin/virtualenvwrapper.sh" >> ~/.bashrc
source ~/.bashrc
mkvirtualenv cv420

 

在虛擬環境中,Python與OpenCV只有一個依賴項,那就是Numpy。在虛擬環境也要進行安裝,否則CMake無法編譯。

# without sudo!!!!
pip3 install numpy

 


在opencv文件夾處新建一個build文件夾。

cd ~/opencv/
mkdir build
cd build

構建cmake參數。-D flag -D后面有一個空格:

cmake -D CMAKE_BUILD_TYPE=RELEASE \
-D CMAKE_INSTALL_PREFIX=/usr/local \
-D OPENCV_EXTRA_MODULES_PATH=~/opencv_contrib/modules \
-D ENABLE_NEON=ON \
-D ENABLE_VFPV3=ON \
-D WITH_OPENMP=ON \
-D BUILD_TIFF=ON \
-D WITH_FFMPEG=ON \
-D WITH_GSTREAMER=ON \
-D WITH_TBB=ON \
-D BUILD_TBB=ON \
-D BUILD_TESTS=OFF \
-D WITH_EIGEN=OFF \
-D WITH_V4L=ON \
-D WITH_LIBV4L=ON \
-D WITH_VTK=OFF \
-D OPENCV_EXTRA_EXE_LINKER_FLAGS=-latomic \
-D OPENCV_ENABLE_NONFREE=ON \
-D INSTALL_C_EXAMPLES=OFF \
-D INSTALL_PYTHON_EXAMPLES=OFF \
-D BUILD_NEW_PYTHON_SUPPORT=ON \
-D BUILD_opencv_python3=TRUE \
-D OPENCV_GENERATE_PKGCONFIG=ON \
-D BUILD_EXAMPLES=OFF ..

 

如果以上都配置正常,並且可以正常打印出一下內容,說明配置成功,這里還要着重檢測下下面的內容,包括 v4l/v4l2是否可用,還有python的位置是否正確。


在進行make之前,還要確保內存足夠,不然會產生內存不足的問題,解決的方式是增加swap虛擬內存。將swap改為2G內存。操作如下圖:
先查看一下自己的服務器swap大小,命令:

free -h

 

可以看到swap大小

使用 cd /user 進入/urs文件夾,新建一個名叫swap的文件夾

cd /usr/
mkdir swap

下一步使用 cd /swap 進入swap文件夾,創建swap文件
創建swap文件命令,擴容2G,count就是20:
這條命令從硬盤里分出一個100M ×20 = 2G 大小的空間,掛在swapfile上

dd if=/dev/zero of=swapfile bs=100M count=20


注意:這里我們bs(buff size)給的100M, bs大小可以根據free -h命令查看的buff/cache的大小來決定,如果給大了可能會報dd: memory exhausted by input buffer of size 1073741824 bytes (1.0 GiB)

swapfile文件創建后,需要構建swap格式於/usr/swap/swapfile 上

mkswap /usr/swap/swapfile

 

用命令激活swap,立即啟用交換分區文件

swapon /usr/swap/swapfile


但是這樣的設置重啟后就失效了,為了保證每次啟動都能啟用該交換空間,需要手動編輯文件/etc/fstab中的swap行

vim /etc/fstab

 

將/swap none swap sw 0 0 這行注釋掉(如果有)
新增一行 /usr/swap/swapfile swap swap defaults 0 0

命令:

free -h

可以看到swap大小變為2G,這里建議可以重啟一下,reboot

五、編譯
一切准備就緒,然后開始進行make,命令如下:
記得重新進入虛擬環境(還可以用screen命令,自行了解)
算了我還是說一下,自己后續回顧也方便

創建會話(-m 強制):
screen -dmS session_name
查看所有會話:
screen -ls
退出 ctrl +a 快速z 快速跳出
進入會話 screen -r 2360


mkvirtualenv cv420
#在opencv目錄下的build目錄下執行
cd /opencv/bulid
make -j4

這是一個漫長的過程,大概需要1個小時5分鍾
當然編譯過程中還會出現錯誤,一般錯誤都是編譯器編譯時不協調進行出的錯誤,出現后直接在進行make就可以了。當然還有可能在編譯到99%或者100%出現錯誤,這個要進行稍微檢測下,或者在接着make。
————————————————
版權聲明:本文為CSDN博主「苦瓜不會碼代碼」的原創文章,遵循CC 4.0 BY-SA版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/weixin_46032860/article/details/117425830

 

測試:

cd opencv/sample/cpp/example_cmake
cmake .
make
./opencv_example

結果

 

 

該過程遇到的問題及解決辦法

一、關於pip3找不到命令

解決方法:

sudo apt-get remove python3-pip
sudo apt-get install python3-pip

二、關於vim無法更改只讀文件

解決方法:

保存時用命令:w ! sudo tee %

     w: 表示保存文件

    !: 表示執行外部命令

     tee: linux命令,這個有點復雜,可以查看linux命令幫助

     %: 在執行外部命令時,%會擴展成當前文件名;這個%區別於替換時的%,替換時%的意義是代表整個文件,而不是文件名

 


免責聲明!

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



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