https://www.cnblogs.com/Pyrokine/p/8921285.html

目标
编译针对python的opencv以及扩展库 环境
树莓派4和3B+都可以
python3.7.3 python2.7共存
opencv3.4.8
--------------------------------------------------------------------------------------------------------------------------------
安装过程
准备1 关闭休眠(可以不管)
  
为了避免安装过程中树莓派休眠,先关闭他自动休眠
https://www.cnblogs.com/kekeoutlook/p/11066283.html
准备2 不要切换安装源(可以不切换)
一般为了安装提速会切换清华或者阿里的源,树莓派3B+好像没这个问题,但是4代切换后,每次安装东西都要提示安装软件依赖包问题不能安装。
因为4代本来就是最新的系统,切换了源里面的很多软件包都是最新的,但是opencv需要一些旧有的版本,就导致了已经安装的最新的版本无法被低级别的取代,进一步阻止你安装。
我是在重新刷了系统试出来的。
虽然有aptitude代替apt-get来安装软件,它会自动按照需求降低版本安装,但是在上述问题下你连aptitude都安装不了。
当然你可以尝试不切换源先把
aptitude安装了,然后在切换源,之后用aptitude代替apt-get来安装东西。我没测试。
准备3 扩大交换分区(必须)
编译到81%的时候卡死了,报错:
解决: g++: internal compiler error: Killed (program cc1plus),内存不够
增加交换分区
https://www.cnblogs.com/kekeoutlook/p/11856057.html

网上说交换分区会造成内存卡损伤加快,如果使用完没有大的使用程序,最好重新调整回去,原来是 100Mb


0 扩大TF卡的空间

如果不做这步操作,后面会出问题,比如卡死

输入(命令行)

sudo raspi-config

然后选择" Advanced Options "然后选择" Expand Filesystem "然后重启树莓派

1 下载opencv以及contrib源码包

1-1 下载opencv

https://github.com/Itseez/opencv/

https://github.com/opencv/opencv/releases

https://github.com/opencv/opencv/releases/tag/3.4.8

1-2 下载扩展库

同样的操作下载扩展库

https://github.com/opencv/opencv_contrib

https://github.com/opencv/opencv_contrib/releases

https://github.com/opencv/opencv_contrib/releases/tag/3.4.8

我从自己的电脑下载好,拷贝到树莓派,解压。

 

2 更新apt(命令行)

sudo apt-get update
sudo apt-get upgrade

3 安装预先依赖库
开始为OpenCV安装做准备,配置所需的库(一次一行)
sudo apt-get install build-essential git cmake pkg-config -y
sudo apt-get install libjpeg8-dev -y
sudo apt-get install libtiff5-dev -y
sudo apt-get install libjasper-dev -y
sudo apt-get install libpng12-dev -y
sudo apt-get install libavcodec-dev libavformat-dev libswscale-dev libv4l-dev -y
sudo apt-get install libgtk2.0-dev -y
sudo apt-get install libatlas-base-dev gfortran -y
4cmake配置
在opencv3.8.4创建 build文件,命令行cd进入build文件夹下面

执行命令

cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D INSTALL_C_EXAMPLES=ON -D INSTALL_PYTHON_EXAMPLES=ON -D OPENCV_EXTRA_MODULES_PATH=/home/pi/Work/1Sortware/opencv38_python37/opencv_contrib-3.4.8/modules -D BUILD_EXAMPLES=ON -D WITH_LIBV4L=ON PYTHON3_EXECUTABLE=/usr/bin/python3.7 PYTHON_INCLUDE_DIR=/usr/include/python3.7 PYTHON_LIBRARY=/usr/lib/arm-linux-gnueabihf/libpython3.5m.so PYTHON3_NUMPY_INCLUDE_DIRS=/home/pi/.local/lib/python3.7/site-packages/numpy/core/include ..  
  • 1修改自己的opencv版本
  • 2修改opencv_contrib对应的路径,这里用的是
    OPENCV_EXTRA_MODULES_PATH=/home/pi/Work/1Sortware/opencv38_python37/opencv_contrib-3.4.8/modules
  • 3修改python版本,这里用的是 python3.7

配置成功

 5编译和安装

在build文件夹下,开始编译

sudo make

漫长的等待,树莓派3B+需要6-7个小时 树莓派4正在编译未知时间,肯定要比3B+快。

早上起来卡在81%报错,内存不够,开启2G的交换空间,又可以继续编译了(刚开始还是卡,但是过了81%就快了)。 

编译成功

安装

sudo make install

成功

两个也可以同时执行

make && sudo make install

  

等待结束

千辛万苦终于好了!!!

来试试目标识别速度提升。

树莓派安装opencv3及其扩展库的更多相关文章

  1. 树莓派安装QT(全部库包括)

    在网上现有的资料中大部分只有前两个命令,少量有三个命令,因此写下该博客 在树莓派上安装QT5的全部库,包括QtQuick.QtMultimedia库. sudo apt-get install qt5 ...

  2. 树莓派安装pip3以及扩展包的方法

    树莓派上有的时候需要安装一些python额外的包,但上面没有安装pip3,因此需要动手去安装pip3,之后用来安装拓展包. 1.首先安装setuptools cd /usr/local/src/ su ...

  3. 1.4.1 安装Python扩展库

    Python之所以得到各行业领域工程师.策划师以及管理人员的青睐,与涉及各行业各领域开发的扩展库也有很大关系,不仅数量众多.功能强大,关键是用起来很方便.虽然Python标准库已经拥有了非常强大的功能 ...

  4. Ubuntu14.10:Install Apache,PHP,Mysql以及扩展库

    step 1: Apache sudo apt-get install apache2 After have apache2 installed, go to localhost by browser ...

  5. 树莓派 Learning 002 装机后的必要操作 --- 05 给树莓派搭建“x86 + pi”环境 -- 安装**32位运行库** -- 解决`E:未发现软件包 xxx` 问题

    树莓派 装机后的必要操作 - 给树莓派搭建"x86 + pi"环境 – 安装32位运行库 – 解决E:未发现软件包 xxx 问题 我的树莓派型号:Raspberry Pi 2 Mo ...

  6. 安装php扩展库

    无法加载'pdo_mysql' ,因为需要pdo这个module.PHP Warning: Cannot load module 'pdo_mysql' because required module ...

  7. window下python 扩展库安装 使用第三方镜像源

    0.前言     由于python的官方镜像位于国外,若使用pip或者easy_install安装第三方插件时或许会被限制,甚至连easy_install或pip也无法安装,例如在windows环境下 ...

  8. 不重新编译PHP文件的情况下php GD库扩展库的编译安装(centos)

    gd-2.0.33.tar.gz http://www.boutell.com/gd/ jpegsrc.v6b.tar.gz http://www.ijg.org/ libpng-1.2.7.tar. ...

  9. php下安装动态扩展库的相关事项

    php下安装动态扩展库的相关事项 我下载的Apache版本为2.4,PHP版本为7.0. 将Apache与PHP集成配置好后(PHP安装目录为:G:\computer\web\php7,apache安 ...

随机推荐

  1. BDFramework.Core 学习

    x哥(懂的都懂)的框架, 拿点代码过来做注释. 想了解详情可以去他的github https://github.com/yimengfan/BDFramework.Core # Object file ...

  2. usb设备在sysfs中的命名规范

    "root-hub的编号"-"设备(或者hub)插入的端口号"[."设备(或者hub)插入的端口号"]:"USB设备配置号&quo ...

  3. JS分类选择插件

    需要做一个选择分类工具,大致要求如下: 点击按钮,显示一级分类,指向某个一级分类显示对应二级分类,分类有几层不定. 只能选择最后一个分类,然后把分类的ID 传值给按钮的value 我的思路: 1.后台 ...

  4. 微信小程序开发-蓝牙功能开发

    0. 前言 这两天刚好了解了一下微信小程序的蓝牙功能.主要用于配网功能.发现微信的小程序蓝牙API已经封装的很好了.编程起来很方便.什么蓝牙知识都不懂的情况下,不到两天就晚上数据的收发了,剩下的就是数 ...

  5. 编写antd配置表单组件

    编写antd配置表单组件 整体思路 抽取formitem的配置数组:包含组件类型.名称.label名称,相关的opts和扩展的opts,传递进入组件 组件通过Form.create()进行表单创建,能 ...

  6. LeetCode 231.2的幂

    LeetCode 231.2的幂 题目: 给定一个整数,编写一个函数来判断它是否是 2 的幂次方. 算法: 若一个数是2的幂次的话定会有n & (n - 1) == 0这个关系成立 所以直接用 ...

  7. pytz库时区的坑(转)

    add by zhj: 推荐使用标准库中的dateutil代替pytz 原文:https://www.hongweipeng.com/index.php/archives/1803/ 起步 在djan ...

  8. 【UOJ#386】【UNR#3】鸽子固定器(贪心)

    [UOJ#386][UNR#3]鸽子固定器(贪心) 题面 UOJ 题解 一个不难想到的暴力做法是把东西按照\(s\)排序,这样子我们枚举极大值和极小值,那么我们选择的一定是这一段之间\(v\)最大的那 ...

  9. ORACLE 求和(多列)

    SELECT SUM(列名),SUM(列名),SUM(列名),SUM(列名) FROM 表名

  10. Linux链接文件——管理链接文件的命令

    Linux链接文件——管理链接文件的命令 摘要:本文主要学习了在Linux系统中创建链接文件的命令. ln命令 ln命令用于给文件创建链接,是Link的缩写. 基本语法 ln [选项] 源文件 目标文 ...