【手把手教学—超简单】树莓派安装OpenCV 3

更新
听说大家OpenCV 的安装过程出现很多我这篇博客并没有列举的坑,所以为了一探究竟,我重新用另一块树莓派安装了一次OpenCV,特此记录并对博客作出一些修改。


首先把准备工作做好,先确保已经更换好源:树莓派换源
首先说说配置:我的树莓派是2018年11月份买的,系统是2018-11-13-raspbian-stretch
附上:树莓派系统下载地址

本文代码均可直接复制进shell

1.安装OpenCV 依赖包:

a. 更新软件源 + 升级安装包 + 升级固件

sudo apt-get update
sudo apt-get upgrade

固件较新或Ubuntu 则可忽略此步:

sudo rpi-update

b. 安装构建OpenCV 相关的工具

sudo apt-get install build-essential cmake git pkg-config

其中包括build-essential、cmake、git和pkg-config

c. 安装常用图像工具包

jpeg格式图像工具包:

sudo apt-get install libjpeg8-dev

tif格式图像工具包:

sudo apt-get install libtiff5-dev

jpeg-2000图像工具包:

sudo apt-get install libjasper-dev

png图像工具包:

sudo apt-get install libpng12-dev

d. 安装视频I/O包

sudo apt-get install libavcodec-dev libavformat-dev libswscale-dev libv4l-dev

e. 安装gtk2.0

sudo apt-get install libgtk2.0-dev

f. 优化函数包

sudo apt-get install libatlas-base-dev gfortran

至此,OpenCV 依赖包已经全部安装完成。

2. 编译OpenCV源代码的准备工作:

a. 下载OpenCV

使用wget工具下载OpenCV 压缩包到用户目录下:

wget -O opencv-3.4.1.zip https://github.com/Itseez/opencv/archive/3.4.1.zip

解压OpenCV:

unzip opencv-3.4.1.zip

下载OpenCV_contrib库:

wget -O opencv_contrib-3.4.1.zip https://github.com/Itseez/opencv_contrib/archive/3.4.1.zip

解压OpenCV_contrib库:

unzip opencv_contrib-3.4.1.zip

b. 进入解压后的OpenCV 源码文件夹

cd opencv-3.4.1

c. 新建一个名为release的文件夹用来存放cmake编译时产生的临时文件

mkdir release
cd release

d. 配置cmake编译参数

此处有第一个坑

sudo cmake -D CMAKE_BUILD_TYPE=RELEASE \
    -D CMAKE_INSTALL_PREFIX=/usr/local \
    -D OPENCV_EXTRA_MODULES_PATH=~/opencv_contrib-3.4.1/modules \
    -D INSTALL_PYTHON_EXAMPLES=ON \
    -D BUILD_EXAMPLES=ON ..

其中参数简介:

参数 作用
CMAKE_BUILD_TYPE=RELEASE 编译方式
CMAKE_INSTALL_PREFIX 安装目录
OPENCV_EXTRA_MODULES_PATH 加载额外模块
INSTALL_PYTHON_EXAMPLES 安装官方python例程
BUILD_EXAMPLES 编译例程

3. 正式开始编译:

此处有第二个坑

a. 编译

此过程极为漫长,我一共编译了4个小时!!!

sudo make

b. 安装

sudo make install

c. 更新动态链接库

sudo ldconfig

恭喜!您已成功安装OpenCV!

下面就来利用一个简单的Python 程序检验一下OpenCV 是否正常工作

# --coding:utf-8--
import cv2
import numpy as np
cv2.namedWindow("gray")
img = np.zeros((512,512),np.uint8)   #生成一张空的灰度图像
cv2.line(img,(0,0),(511,511),255,5)  #绘制一条白色直线
cv2.imshow("gray",img)               #显示图像
                                             
while True:                          #循环等待,按q键退出
    key=cv2.waitKey(1)
    if key==ord("q"):
        break
cv2.destoryWindow("gray")

若OpenCV 正常工作,则屏幕显示一条白色斜线:
【手把手教学—超简单】树莓派安装OpenCV 3_第1张图片
最后说一句,在此我极度建议大家备份一下,不然花了那么长时间安装好,万一出了点差错,TF卡坏了,那真是…哔了狗了

填坑

一、

若上述第一个坑处不能正常编译,试着把后面3个参数去掉,即:

sudo cmake -D CMAKE_BUILD_TYPE=RELEASE \
    -D CMAKE_INSTALL_PREFIX=/usr/local ..

二、源码错误

这里出问题了,一定要仔细看错误信息,找出来Error 到底是什么。
这里就出现了一个因为源码问题而不能正常进行下去的错误:

error: invalid conversion from 'const char*' to 'char*'

解决办法在此:https://bugs.gentoo.org/691480

即找到错误信息中提到的文件并打开,然后修改:

     if(!obj || obj == Py_None)
         return true;
-    char* str = PyString_AsString(obj);
+    const char* str = PyString_AsString(obj);
     if(!str)
         return false;
     value = String(str);

去掉char* str = PyString_AsString(obj);,加上const char* str = PyString_AsString(obj);


最后,若遇上什么问题,可以看看这里有没有解决方案:
https://bugs.gentoo.org/691480
http://cn.waterlin.org/CVCG/OpenCV-installation-error.html
https://www.jianshu.com/p/259a6140da9d
https://github.com/opencv/opencv/issues/12957

你可能感兴趣的:(OpenCV,树莓派,Python)