opencv自己編譯
之前用樹莓派做人臉識別,臺式機用的64位ubuntu訓練模型,樹莓派用的32位raspi系統使用。
以下提供給大家參考:
?以下內容為快速安裝的方式,無需自己編譯喲!此方法很方便
一般化快速安裝環境
- 依賴安裝
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
- 翻墻下載此內容:點我下載
- 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先把上面?中的依賴下一遍
- 下載你想要的opencv源碼和opencv-contrib源碼(兩個都得有!!),如果git clone速度慢,可以直接去github或者官網去下,
git clone https://github.com/opencv/opencv.git
git clone https://github.com/opencv/opencv_contrib.git
- 進入opencv目錄進行如下操作:
cd opencv
mkdir build
cd build
- 構建項目,注意參數的地址一定要對應你自己電腦(樹莓派)上的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/
..
- 開始編譯,此過程超級漫長!我的小樹莓派用了2個多小時吧!
make -j4
sudo make install
- 刷新動態庫
sudo ldconfig
以上順利的話編譯完成了,進入python3之后使用import cv2進行測試,如果報某moudle找不到,根據信息進行pip3 install進行下載即可。