opencv 源碼編譯

opencv自己編譯

之前用樹莓派做人臉識別,臺式機用的64位ubuntu訓練模型,樹莓派用的32位raspi系統使用。
以下提供給大家參考:
?以下內容為快速安裝的方式,無需自己編譯喲!此方法很方便

一般化快速安裝環境

  1. 依賴安裝
sudo apt-get update
sudo apt-get upgrade
sudo apt-get install libhdf5-dev libhdf5-serial-dev
sudo apt-get install libqtgui4 libqtwebkit4 libqt4-test python3-pyqt5
sudo apt-get install libatlas-base-dev
sudo apt-get install libjasper-dev
  1. 翻墻下載此內容:點我下載
  2. cd到下載的內容位置進行安裝:
sudo pip3 install opencv_contrib_python-3.4.3.18-cp37-cp37m-linux_armv7l.whl

直接import就可以玩了

對于一般的小伙伴來說,以上安裝opencv方案已經完美了
但對我來說,其結果是啪啪啪打臉,因為我使用的sklearn訓練的模型在跨系統下根本不能兼容。報錯如下:(此錯誤為python讀取模型文件的錯誤,不是opencv的錯喲!)

ValueError: Buffer dtype mismatch, expected 'ITYPE_t' but got 'long long'

我嘗試過將model文件轉換成可以序列的json,也總是失敗,一怒之下,直接把樹莓派刷成了專門適用于樹莓派4b8g的ubuntu server 64bit系統
(現在時間為2020-10-27,ubuntu mate還沒有4b版本的系統,官方測試版raspi64bit垃圾)
然而此ubuntu server系統為aarch64,沒有這類opencv環境或者whl文件可以用,因此需要自己使用opencv源碼進行編譯!

自己編譯opencv由此開始:

================下面開始真正的操作===========================
利用apt-get先把上面?中的依賴下一遍

  1. 下載你想要的opencv源碼和opencv-contrib源碼(兩個都得有!!),如果git clone速度慢,可以直接去github或者官網去下,
git clone https://github.com/opencv/opencv.git
git clone https://github.com/opencv/opencv_contrib.git
  1. 進入opencv目錄進行如下操作:
cd opencv
mkdir build
cd build
  1. 構建項目,注意參數的地址一定要對應你自己電腦(樹莓派)上的python位置和環境,小編為了便于觀看和理解,擅自給每條指令加了回車,所以使用的時候需要去掉回車,用空格切分:
cmake -D CMAKE_BUILD_TYPE=Release 
-D CMAKE_INSTALL_PREFIX=/usr/local 
-D OPENCV_EXTRA_MODULES=../../opencv_contrib/modules 
PYTHON3_EXECUTABLE = /usr/bin/python3
PYTHON_INCLUDE_DIR = /usr/include/python3.5
PYTHON_INCLUDE_DIR2 = /usr/include/arm-linux-gnueabihf/python3.5m
PYTHON_LIBRARY = /usr/lib/arm-linux-gnueabihf/libpython3.5m.so
PYTHON3_NUMPY_INCLUDE_DIRS = /home/pi/.local/lib/python3.5/site-packages/numpy/core/include/
..
  1. 開始編譯,此過程超級漫長!我的小樹莓派用了2個多小時吧!
make -j4
sudo make install
  1. 刷新動態庫
sudo ldconfig

以上順利的話編譯完成了,進入python3之后使用import cv2進行測試,如果報某moudle找不到,根據信息進行pip3 install進行下載即可。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容