安装前准备

  1. 在树莓派上拓展文件系统

    如果你使用的树莓派为新装的系统,那么第一件事情就是扩展文件系统,以包括microSD卡上的所有空间。

    具体步骤如下:

      1.在树莓派终端(或者SSH)上输入:

 $ sudo raspi-config

      2.然后选择“高级选项”菜单项

  

      3.然后选择“扩展文件系统”:

  

     4. 选择第一个选项“A1.Expand Filesystem”,按键盘上的Enter键,完成后点击“Finish”按钮,重新启动树莓派。

    如果不能重启,则可以执行以下操作:

 $ sudo reboot

      重新启动后,文件系统已经扩展为包括micro-SD卡上的所有空间。可以通过执行 df -h 检查输出来验证磁盘是否已扩展。

 $ df -h

  

      5. 此时我的树莓派文件系统已扩展为包含16GB的micor-SD卡。如果您使用的是8GB卡,则可能使用了将近50%的可用空间,

    因此,一件简单的事情就是删除LibreOffice和Wolfram引擎以释放Pi上的一些空间:

 $ sudo apt-get purge wolfram-engine
$ sudo apt-get purge libreoffice*
$ sudo apt-get clean
$ sudo apt-get autoremove

  2.更换树莓派源为清华镜像源,防止后面下载GTK2.0失败。

    换源方法参考:https://www.cnblogs.com/gghy/p/11703606.html

安装步骤

   1.更新系统

1 $ sudo apt-get update && sudo apt-get upgrade

   

   2.在树莓派上安装OpenCV所需要依赖的工具和一些图像视频库

  • 安装包括CMake的开发人员工具

     // 安装build-essential、cmake、git和pkg-config
    sudo apt-get install build-essential cmake git pkg-config

  • 安装常用图像工具包

     // 安装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

  • 安装常用的视频库

 //v4l中4后面的是 英文字母“l”
sudo apt-get install libavcodec-dev libavformat-dev libswscale-dev libv4l-dev

  

  • 安装GTK2.0

     sudo apt-get install libgtk2.-dev

  • 安装OpenCV数值优化函数包

 sudo apt-get install libatlas-base-dev gfortran

    

    3.下载编译OpenCV源码

  • 下载opencv3.4.3和opencv_contrib3.4.3

 // 下载OpenCV
wget -O opencv-3.4..zip https://github.com/Itseez/opencv/archive/3.4.3.zip

   

 // 解压OpenCV
unzip opencv-3.4..zip

   

 // 下载OpenCV_contrib库:
wget -O opencv_contrib-3.4..zip https://github.com/Itseez/opencv_contrib/archive/3.4.3.zip

   

 // 解压OpenCV_contrib库:
unzip opencv_contrib-3.4..zip
   
  • 配置CMake编译OpenCV 3环境

    使用CMake设置编译,然后运行 make 来编译OpenCV。这是整个过程中耗时最长的步骤,大约4个小时。

    回到OpenCV存储库并创建 build 文件夹,用来存放 CMake 编译时产生的临时文件。

 //具体路径请以实际为准
cd ~/opencv-3.4. // 新建build文件夹
mkdir build // 进入build文件夹
cd build

   

  • 设置CMake编译参数,安装目录默认为/usr/local

    注意参数名、等号和参数值之间不能有空格,每行末尾“\”之前有空格,这里使用换行符“\”是为了看起来工整,参数值最后是两个英文的点,意思是上级

  目录(【注意】如果在root用户下执行cmake命令,请将OPENCV_EXTRA_MODULES_PATH的值改为绝对路径,如:/home/pi/opencv_contrib-3.4.3/modules):

/** CMAKE_BUILD_TYPE是编译方式
* CMAKE_INSTALL_PREFIX是安装目录
* OPENCV_EXTRA_MODULES_PATH是加载额外模块
* INSTALL_PYTHON_EXAMPLES是安装官方python例程
* BUILD_EXAMPLES是编译例程(这两个可以不加,不加编译稍微快一点点,想要C语言的例程的话,在最后一行前加参数INSTALL_C_EXAMPLES=ON,要C++例程的话在最后一行前加参数INSTALL_C_EXAMPLES=ONINSTALL_CXX_EXAMPLES=ON)
**/ sudo cmake -D CMAKE_BUILD_TYPE=RELEASE \
-D CMAKE_INSTALL_PREFIX=/usr/local \
-D OPENCV_EXTRA_MODULES_PATH=~/opencv_contrib-3.4./modules \
-D INSTALL_PYTHON_EXAMPLES=ON \
-D INSTALL_CXX_EXAMPLES=ON \
-D BUILD_EXAMPLES=ON ..

   

    配置完后如下图:

   

  • 备份build文件中的东西

    因为下一步的编译会使用build文件中的东西,假如编译失败后还要重新进行cmake,比较耽误时间,这里可以直接备份一下cmake好的build文件夹,

  命名为build1,重新make的时候可以拿来用。

 //返回上层目录
cd ..
//备份release文件夹
cp -r release ./release1

  

  • 为树莓派增加SWAP

    在开始编译之前,建议你增加交换空间。这将使你使用树莓派的所有四个内核来编译OpenCV,而不会由于内存耗尽导致编译挂起。

    打开 / etc / dphys - swapfile   文件:

 $ sudo nano /etc/dphys-swapfile

    然后编辑 CONF_SWAPSIZE  变量:

   

     注意:此处我将交换空间从100MB增加到2048MB;如果你不执行此步骤,你的树莓派编译时很可能挂起。

    重新启动交换服务:

 $ sudo /etc/init.d/dphys-swapfile stop
$ sudo /etc/init.d/dphys-swapfile start

   

    注意:增加交换空间的大小是烧坏树莓派 microSD卡的好方法。基于闪存的存储只能执行有限数量的写操作,直到该卡基本不能够容纳1和0。我们只能在短时间内

  启动大型交换,所以这没什么大问题的。

  • 编译OpenCV 3

 /**
* 以管理员身份,否则容易出错
* make命令参数-j4指允许make使用最多4个线程进行编译,这样编译速度会更快
* 可以根据自己机器的情况进行更改
* 使用tee命令可以将编译过程中终端显示的信息保存到make.log文件中,便于查看,这样即使VNC断线,终端的* 信息太多看不到,也可以通过make.log文件查看编译过程。
**/ sudo make -j4 >& | tee make.log

   

    如果看到进度编译到100%,那么说明编译安装成功。

   

 // 安装
sudo make install // 更新动态链接库
sudo ldconfig

   

    注意: 不要忘记回到 /etc/dphys-swapfile 文件:

       1.将 CONF_SWAPSIZE 重置为 100MB

       2.重新启动交换服务

其他配置

   设置库的路径,相当于windows下的环境变量,便于使用OpenCV库,也可以不进行设置,使用的时候说明路径也可。例如在编译时说明使用库的路径是 -L/usr/local/lib

  1.配置opencv.conf 

   打开opencv.conf配置文件,在末端加入如下内容: 

 //这里我使用的是树莓派默认的nano,也可以使用vim、gedit.打开opencv.conf文件
sudo nano /etc/ld.so.conf.d/opencv.conf /**
*在末端添加如下内容
*注意:?表示一个空格,可能原因是有的语言要求最后有一个空格才可以编译通过。
**/
/usr/local/lib
? //加载一下
sudo ldconfig

  

  2.打开 bash.bashrc 配置文件

 //打开bash.bashrc配置文件
sudo gedit /etc/bash.bashrc // 在最后添加如下内容
PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig
export PKG_CONFIG_PATH

   

  3.重启树莓派

 sudo reboot

检测OpenCV使用是否正常

  python程序

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

  保存文件为 test.py ,并在终端运行程序

 sudo python3 test.py

  运行结果如下:

  

树莓派3B/3B+和4B安装OpenCV教程的更多相关文章

  1. 树莓派学习笔记——apt方式安装opencv

    0.前言     本文介绍怎样在树莓派中通过apt方式安装opencv.并通过一个简单的样例说明怎样使用opencv. 相比于源码方式安装opencv,通过apt方式安装过程步骤简单些,消耗的时间也少 ...

  2. 树莓派通过apt方式安装opencv库

    1.安装opencv     开始之前进行必要的更新工作. sudo apt-get update     安装opencv. sudo apt-get install libcv-dev     安 ...

  3. ubuntu 14.04 下利用apt-get方式安装opencv

    转载,请注明出处:http://blog.csdn.net/tina_ttl 目录(?)[+] 标签(空格分隔): Linux学习 OpenCV ubuntu 1404 下利用apt-get方式安装O ...

  4. 树莓派3B/3B+/4B 刷机装系统烧录镜像教程

    树莓派3B/3B+/4B 刷机装系统烧录镜像教程 树莓派 背景故事 刚拿到树莓派的第一件事,应该就是要装系统了,那么应该怎么操作呢?下面就给大家介绍一下吧. 硬件准备 树莓派:3B/3B+/4B,本教 ...

  5. 树莓派3b安装opencv

    前言:最近买了一个CSI接口的摄像头,最准用树莓派做人脸识别项目.树莓派上本身已经安装了python2.python3,最开始通过sudo apt-get install python3-opencv ...

  6. 树莓派3B/3B+ 清华镜像系统和安装中文输入法Fcitx及Google拼音输入法

    你还在为树莓派无法安装中文输入法而到处找教程吗? 你还在为树莓派每次下载都要远隔重洋获取资源,龟速下载而烦恼吗? 为了解决这个问题,在这篇树莓派教程中,我将手把手叫你怎样安装 清华镜像系统和中文输入法 ...

  7. RaspberryPi 3b+ 安装OpenWrt教程

    layout: post title: "RaspberryPi 3b+ 安装OpenWrt教程" date: 2019-09-28 22:00:00 +0800 categori ...

  8. [软件开发技巧]·树莓派极简安装OpenCv

    树莓派极简安装OpenCv 个人主页–> https://xiaosongshine.github.io/ 因为最近在开发使用树莓派+usb摄像头识别模块,打算用OpenCv,发现网上的树莓派O ...

  9. [树莓派(raspberry pi)] 02、PI3安装openCV开发环境做图像识别(详细版)

    前言 上一篇我们讲了在linux环境下给树莓派安装系统及入门各种资料 ,今天我们更进一步,尝试在PI3上安装openCV开发环境. 博主在做的过程中主要参考一个国外小哥的文章(见最后链接1),不过其教 ...

随机推荐

  1. comparator接口实现时,只需要实现 int compare(T o1, T o2)方法?

    从Comparator接口的源码,可以看到Comparator接口中的方法有三类: 1 普通接口方法 2 default方法 3 static方法 其中default方法和static方法 是java ...

  2. Markdown的基本使用指南

    目录 1.标题 2.列表 2.1无序列表 2.1有序列表 3.引用 4.图片和链接 5.粗体和斜体 6.分割线 7.代码框和代码块 8.列表 9.可选框 10.添加目录 Markdown 是一种用来写 ...

  3. 微信小程序——获取formid

    小程序对模板消息推送做了相应的限制:如果用户主动触发小程序表单提交1次,小程序可在7天内向用户主动推送1条模版消息,如果用户通过小程序完成支付,小程序可在7天内向用户主动推送3条模版消息.(formi ...

  4. ThingJS和传统3D开发的区别

    物联网3D可视化开发已经辐射到各行各业,无论车间还是消防,城市还是粮仓,亦或是地铁.科技园,物联网可视化是科技的进步,也是行业的进步.而传统的3D可视化开发实施起来并不那么乐观.如果使用ThingJS ...

  5. 小白学微信小程序

    奔着实用性的目的-测试孩子的认字量,开发了一个微信小程序-测字大王.上下班路上看书看了一个星期,代码前后共写一个星期.现在小程序已经对外开放,share下我的开发过程吧. 一 工具准备 首先先过一篇 ...

  6. C#解析深浅拷贝

    前言 前面我们学习完了设计模式,在其中我们有了解到原型模式.这里涉及到了克隆自身对象.那么也就是对对象进行拷贝.这里就涉及到了这么一个概念.深浅拷贝.何为深拷贝何为浅拷贝呢?我们一起来看看吧. 浅拷贝 ...

  7. 基于appium实现的线性代码引用unittest单元测试框架

    在前段时间,分享了几篇关于appium基础的博文,再加上期间也有讲到unittest测试框架,所以今天就来一个专题,在appium+python实现的线性代码基础上,引入unittest框架,使代码更 ...

  8. 3D切割轮播图

    预览图: 实现原理:将图片切割构建一个和ul(电脑屏幕)同一个轴的立方体,利用延时旋转实现切割效果 知识点:transform-style属性(必须搭配transform属性使用) 值 描述 flat ...

  9. Mac OSX 10.7.3 以上系统安装JDK1.7失败 Java from Oracle requires Mac OS X 10.7.3 or later.

    解决办法: 打开JDK dmg安装包,把里面的pkg安装包拖出来然后解包 xar -xf JDK\ 7\ Update\ 40.pkg ./Java 修改Distribution文件找到pm_inst ...

  10. Linux 操作点滴

    1. 查找文件内容 find -type f -name '*' | xargs grep '' 2. 查看所有环境变量 env 3. so动态库文件查找路径:/lib    /usr/lib   / ...