Install opencv 4.1.1 on Raspberry pi3

在Python2上安装opencv

sudo apt-get install libopencv-dev
sudo apt-get install python-opencv

进入python,进行测试

import cv2 

在Python3上安装opencv

目前没有pip3 install opencv-python 或者apt install opencv 这样直接简单的方法直接安装,需要自己在github上下载opencv4.1.1,使用cmake来自己编译安装

  1. 首先增加交换空间以避免因内存问题导致的编译挂起
sudo nano /etc/dphys-swapfile
//将 CONF_SWAPSIZE 值从默认值更改 100 为 1024 :
CONF_SWAPSIZE=1024

保存文件并运行以下命令以使更改生效:

sudo /etc/init.d/dphys-swapfile restart
  1. 更新包索引并安装构建工具和所需的依赖项:
sudo apt update
sudo apt install build-essential cmake git pkg-config libgtk-3-dev libcanberra-gtk*
sudo apt install libavcodec-dev libavformat-dev libswscale-dev libv4l-dev libxvidcore-dev libx264-dev
sudo apt install libjpeg-dev libpng-dev libtiff-dev gfortran openexr libatlas-base-dev opencl-headers
sudo apt install python3-dev python3-numpy libtbb2 libtbb-dev libdc1394-22-dev
  1. 创建一个新目录并从 Github 克隆 OpenCV 和 OpenCV contrib 存储库:
mkdir ~/opencv_build && cd ~/opencv_build

clone 可能非常的慢,我们可以用wget 直接下载archive再解压,速度可观

git clone https://github.com/opencv/opencv.git
git clone https://github.com/opencv/opencv_contrib.git
  1. 完成克隆后在opencv下新建build目录并切换该目录:
mkdir -p ~/opencv_build/opencv/build
cd ~/opencv_build/opencv/build
  1. 使用 CMake 设置 OpenCV 构建配置
cmake -D CMAKE_BUILD_TYPE=RELEASE \
    -D CMAKE_INSTALL_PREFIX=/usr/local \
    -D INSTALL_C_EXAMPLES=OFF \
    -D INSTALL_PYTHON_EXAMPLES=OFF \
    -D OPENCV_GENERATE_PKGCONFIG=ON \
    -D ENABLE_NEON=ON \
    -D ENABLE_VFPV3=ON \
    -D BUILD_TESTS=OFF \
    -D OPENCV_ENABLE_NONFREE=ON \
    -D OPENCV_EXTRA_MODULES_PATH=~/opencv_build/opencv_contrib/modules \
    -D BUILD_EXAMPLES=OFF ..

完成后结果如下:

-- Configuring done
-- Generating done
-- Build files have been written to: /home/pi/opencv_build/opencv/build

此处给出另一种cmake配置,因为我按照上面配置是一只出现如下报错

[ 40%] Linking CXX executable ../../bin/opencv_perf_core
/usr/bin/ld: ../../lib/libopencv_core.so.4.1.1: undefined reference to `__atomic_fetch_add_8'
/usr/bin/ld: ../../lib/libopencv_core.so.4.1.1: undefined reference to `__atomic_fetch_sub_8'
/usr/bin/ld: ../../lib/libopencv_core.so.4.1.1: undefined reference to `__atomic_store_8'
/usr/bin/ld: ../../lib/libopencv_core.so.4.1.1: undefined reference to `__atomic_load_8'
/usr/bin/ld: ../../lib/libopencv_core.so.4.1.1: undefined reference to `__atomic_compare_exchange_8'

解决方案链接,即进行如下cmake配置:

cmake -D CMAKE_BUILD_TYPE=RELEASE \
   -D CMAKE_INSTALL_PREFIX=/usr/local/ \
   -D OPENCV_EXTRA_MODULES_PATH=/home/pi/opencv/opencv_contrib-4.1.1/modules/ \
   -D OPENCV_EXTRA_EXE_LINKER_FLAGS=-latomic \
   -D ENABLE_PRECOMPILED_HEADERS=OFF \
   -D ENABLE_NEON=ON \
   -D ENABLE_VFPV3=ON \
   -D ENABLE_LTO=ON \
   -D CPU_BASELINE=NEON \
   -D WITH_TBB=ON \
   -D WITH_OPENCL=ON \
   -D WITH_GSTREAMER=ON \
   -D BUILD_EXAMPLES=OFF \
   -D BUILD_TESTS=OFF \
   -D BUILD_SHARED=OFF ..
  1. 运行make启动编译,此处花费了我一个星期时间,首先正常编译可能就需要5个小时,然后出现了以上步骤5中的报错,寻找了很久的解决方案才得以结局!若中间尝试间无反应请耐心等待。
make -j4

-j4 表示4核同步编译,树莓派pi3 为4核

  1. 最后一步,安装已经编译好的opencv文件
sudo make install

最后进入python3,输入import cv2 查看是否有报错

import cv2
  1. 最后需要将我们的hphys-swapfile值改回100M,因为大量交换使用可能会损坏您的 SD 卡。
sudo nano /etc/dphys-swapfile
CONF_SWAPSIZE=100
sudo /etc/init.d/dphys-swapfile restart
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值