树莓派安装opencv3.4.0遇到的坑

一、安装
pip3 install numpy
pip3 install opencv-python

以上在ubunt上安装成功,但是在树莓派安装失败,在树莓派上Python2可以使用apt install python-opencv安装成功,Python3只能自己编译

二、树莓派在python3中安装opencv
参考网页:https://www.cnblogs.com/lynsyklate/p/7719500.html

  1. 获取源码
    git clone https://github.com/opencv/opencv.git
    git clone https://github.com/opencv/opencv_contrib.git

这里需要注意,opencv和contrib必须对应否则编译会失败,因此我此处clone了最新的

  1. 使用CMAKE从源码构建项目

  2. 创建临时目录用来存储我们编译后的opencv库
    cd opencv
    mkdir build
    cd build

  3. 构建项目
    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/

Python的libraries,numpy,packages Path都没有,说明Python环境不正常,不会生成Python的opencv库,到时候会报ImportError: No module named cv2的错误。

网上教程害死人,打开opencv的CMAKELists.txt,发现许多变量名是错的,下面是opencv的CMAKELists.txt部分代码。

status(" Python 3:")
status(" Interpreter:" PYTHON3INTERP_FOUND THEN “${PYTHON3_EXECUTABLE} (ver P Y T H O N 3 V E R S I O N S T R I N G ) " E L S E N O ) i f ( B U I L D o p e n c v p y t h o n 3 ) i f ( P Y T H O N 3 L I B S V E R S I O N S T R I N G ) s t a t u s ( " L i b r a r i e s : " H A V E o p e n c v p y t h o n 3 T H E N " {PYTHON3_VERSION_STRING})" ELSE NO) if(BUILD_opencv_python3) if(PYTHON3LIBS_VERSION_STRING) status(" Libraries:" HAVE_opencv_python3 THEN " PYTHON3VERSIONSTRING)"ELSENO)if(BUILDopencvpython3)if(PYTHON3LIBSVERSIONSTRING)status("Libraries:"HAVEopencvpython3THEN"{PYTHON3_LIBRARIES} (ver P Y T H O N 3 L I B S V E R S I O N S T R I N G ) " E L S E N O ) e l s e ( ) s t a t u s ( " L i b r a r i e s : " H A V E o p e n c v p y t h o n 3 T H E N " {PYTHON3LIBS_VERSION_STRING})" ELSE NO) else() status(" Libraries:" HAVE_opencv_python3 THEN " PYTHON3LIBSVERSIONSTRING)"ELSENO)else()status("Libraries:"HAVEopencvpython3THEN"{PYTHON3_LIBRARIES}” ELSE NO)
endif()
status(" numpy:" PYTHON3_NUMPY_INCLUDE_DIRS THEN “${PYTHON3_NUMPY_INCLUDE_DIRS} (ver P Y T H O N 3 N U M P Y V E R S I O N ) " E L S E " N O ( P y t h o n 3 w r a p p e r s c a n n o t b e g e n e r a t e d ) " ) s t a t u s ( " p a c k a g e s p a t h : " P Y T H O N 3 E X E C U T A B L E T H E N " {PYTHON3_NUMPY_VERSION})" ELSE "NO (Python3 wrappers can not be generated)") status(" packages path:" PYTHON3_EXECUTABLE THEN " PYTHON3NUMPYVERSION)"ELSE"NO(Python3wrapperscannotbegenerated)")status("packagespath:"PYTHON3EXECUTABLETHEN"{PYTHON3_PACKAGES_PATH}” ELSE “-”)
endif()

按照opencv的CMAKELists.txt修改配置命令:

cmake -D BUILD_opencv_python3=YES -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local -D OPENCV_EXTRA_MODULES=…/…/opencv_contrib/modules -D PYTHON3_LIBRARIES=/usr/lib/arm-linux-gnueabihf/libpython3.5m.so -D PYTHON3_NUMPY_INCLUDE_DIRS=/home/pi/.local/lib/python3.5/site-packages/numpy/core/include/ …

终于配置成功了,犯了以下错误:

  1. 指定参数的时候有些没加-D。
  2. 没有启用BUILD_opencv_python3。
  3. 部分变量名错了

配置成功后应该如下图所示:

  1. 编译与安装
    make -j4
    sudo make install
    //更新动态库
    sudo ldconfig

注:报错ImportError: numpy.core.multiarray failed to import,import numpy也失败报错libblas.so.3: cannot open shared object file: No such file or directory。

解决:sudo apt-get install libatlas3-base

最终安装成功

三、在树莓派上安装c语言的opencv
sudo apt-get install libcv-dev
1
写一个小程序查看版本:

#include <stdio.h>
#include <opencv/cv.h>

int main(void){
    printf("%s\n", CV_VERSION);
}

遇到一个大坑,opencv3.4.0源码报错。
需要修改代码:
vim opencv-3.4.0/modules/python/src2/cv2.cpp +885
将返回值强行转到char
*

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

刘仕豪

IT发展快就是因为有开源精神

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值