树莓派 编译安装OpenCV4.1.0+opencv_contrib-4.1.0_树莓派 opencv4 下载-程序员宅基地

技术标签: OpenCV  人脸识别  Python  

一、下载OpenCV4.1.0+opencv_contrib-4.1.0
          树莓派下载文件比较慢可以用电脑先下载文件,下载地址:
          OpenCV4.1.0下载地址:https://github.com/Itseez/opencv/archive/4.1.0.zip
          opencv_contrib-4.1.0下载地址:https://github.com/Itseez/opencv_contrib/archive/4.1.0.zip
文件我已经下载下来了,还有安装过程中容易缺少的文件也有:链接:https://pan.baidu.com/s/1Aei33G1C-CQ30DySj0hBtg
提取码:9o7t
二、复制文件
1.首先下载电脑与树莓派互传文件的软件,推荐FileZilla
在这里插入图片描述
主要在主机哪儿输入树莓派地址,树莓派用户名一般为pi,输入密码自己设定的默认为raspberry,主机端口一般为22,
然后点击快速连接就可以了。
然后将OpenCV4.1.0+opencv_contrib-4.1.0上传到树莓派home/pi文件夹下,解压成两个文件
三、文件处理
完成以上工作之后。将opencv_contrib-4.1.0文件夹改名为opencv_contrib,并放到opencv-4.1.0文件夹里。在opencv-4.1.0文件夹里建立build文件夹,命令:mkdir build 如下图所示:
在这里插入图片描述
三、扩展根分区和设置swap交换空间
A、扩展根分区
在树莓派编译OpenCV需要很大的内存,SD卡最好至少16个G(我的SD卡位32个G)。由于刚刚使用,树莓派根分区比较小,我们需要扩展空间:
a、安装raspi-config(一般树莓派里面默认已安装)

sudo apt-get install  raspi-config

运行raspi-config

sudo raspi-config

在这里插入图片描述
在这里插入图片描述
选择Expand Filesystem (也有版本为expand_rootfs), 选择并确定后
b、查看空间

df -h

文件系统 容量 已用 可用 已用% 挂载点
/dev/root 13G 11G 1.3G 90% /
devtmpfs 433M 0 433M 0% /dev
tmpfs 438M 0 438M 0% /dev/shm
tmpfs 438M 12M 426M 3% /run
tmpfs 5.0M 4.0K 5.0M 1% /run/lock
tmpfs 438M 0 438M 0% /sys/fs/cgroup
/dev/mmcblk0p6 68M 23M 46M 33% /boot
tmpfs 88M 0 88M 0% /run/user/1000
/dev/mmcblk0p5 30M 398K 28M 2% /media/pi/SETTINGS
/dev/root 编程13G了,我的SD卡是16G的
B、设置swap交换空间
我在编译OpenCV时至少花了有7个多小时,最后到99%的时候卡死了,鼠标也不能动,键盘也不动,原因是系统默认设置的swap交换空间不够。所以编译之前最好设置一下swap交换2G空间,一方面加快运算速度,另一方面防止卡死。输入命令如下:

1,命令:
cd /opt
sudo mkdir image
sudo touch swap
sudo dd if=/dev/zero of=/opt/image/swap bs=1024 count=2048000
过一段时间会返回信息,这个过程有点小长,注意不是死机了,耐心等一等。返回的信息大概是:
2048000+0 records in
2048000+0 records out
2097152000 bytes (2.1 GB, 2.0 GiB) copied, 242.095 s, 8.7 MB/s
 
2,再输入命令:
sudo mkswap /opt/image/swap
 
检查现有的交换空间大小,使用命令free:
free -m
 
3,启动新增加的2G的交换空间,使用命令swapon:
sudo swapon /opt/image/swap
 
确认新增加的2G交换空间已经生效,使用命令free
free -m
 
4,修改/etc/fstab文件,使得新加的2G交换空间在系统重新启动后自动生效
sudo vim /etc/fstab
 
在文件最后加入:
/opt/image/swap    /swap    swap    defaults 0 0

四、安装OpenCV的相关工具
安装cmake编译器

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

安装OpenCV的图像工具包

sudo apt-get install libjpeg8-dev 
sudo apt-get install libtiff5-dev 
sudo apt-get install libjasper-dev 
sudo apt-get install libpng12-dev 

安装视频I/O包

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

安装gtk2.0和优化函数包

sudo apt-get install libgtk2.0-dev
sudo apt-get install libatlas-base-dev gfortran

五、安装编译OpenCV4.1.0+opencv_contrib-4.1.0
为了安装方便不容易出错,建议使用cmake-gui安装,首先安装cmake-GUI:

sudo apt-get install cmake-gui

安装完成后运行cmake-gui:

cmake-gui 

在Where is the source code:选择opencv-4.1.0目录位置(我的位置为:/home/pi/opencv-4.1.0),
在Where to build the binaries:选择build位置(我的位置为:/home/pi/opencv-4.1.0/build)。如下图所示:
在这里插入图片描述
选择完毕点击Configure,配置完毕如下图所示:
在这里插入图片描述
等完了以后找到BUILD_opencv_world,后面的方框点上勾;
找到在CMAKE_BUILD_TYPE 值处输入RELEASE,其他保持不变;
找到OPENCV_ENABLE_NONFREE,在后面的方框点上勾(有的算法有专利,不点这个不能用,比如sift);
找到OPENCV_EXTRA_MODULES_PATH,选择opencv_contrib文件夹中的modules文件夹,注意是modules文件夹(我的路径是/home/pi/opencv-4.1.0/opencv_contrib/modules)。
完成以上工作再点击Configure,耐心等一等,如果上面还有红色的再点击Configure,之到没有红色为止。Configure完成之后点击Generate,等一等即可。正常情况下,等Generate完成之后,我们可以直接在build目录下输入命令:make 进行编译工作了。但实际上这样很可能出错,我在编译了5个多小时后报错了,出错的原因一般都是说缺少什么文件,缺少的文件主要是Cmake在配置时由于网络不好没下载下来。我在位于build下的CmakeDownloadLog.txt可以查看到有哪些文件下载失败。经常下载失败的文件我上传到了我的百度云,链接还是上面的百度云链接。建议大家编译之前到build目录下的downloads/xfeatures2d文件夹里查看是否有我如下11个文件。
在这里插入图片描述
如果没有务必拷贝到build目录下的downloads/xfeatures2d文件夹里。我在安装时还有一个文件face_landmark_model.dat没有下载成功,将该文件放到build目录下的/share/opencv4/testdata/cv/face目录下,如果没有目录可自行建立。
检查拷贝完毕,最好再次Configure一下,直到没有上面没有红色为止,然后再点击Generate。如果不放心可以再次检查日志。
最后在build目录下输入命令:

sudo make

编译时间很长,需要耐心等待,估计要编译7个小时左右
编译不出错完成之后,在build目录下输入命令:

sudo make install

等待安装完成。
六、配置OpenCV4.1.0环境
安装完需要配置环境,树莓派可以使用vim,输入命令如下:

  sudo vim /etc/ld.so.conf.d/opencv.conf

打开以后文件是空的什么也没有,添加下面这一句:

  /usr/local/lib

保存后退出,再输入命令:

  sudo ldconfig

然后更改环境变量,输入命令:

  sudo gedit /etc/bash.bashrc

打开之后,在文件最后面输入以下内容:

  PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig 
  export PKG_CONFIG_PATH

保存退出,opencv基本上就安装完成了。
**整理不易,点个赞呗 **

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_15181569/article/details/95449111

智能推荐

Win10下go+grpc+protobuf环境搭建_protoc-gen-go-grpc.exe-程序员宅基地

文章浏览阅读1.4k次。1、_protoc-gen-go-grpc.exe

TypeError: data type not understood_typeerror: data type 'uint-8' not understood-程序员宅基地

文章浏览阅读1.2w次。python的二维数据表示要用二层括号来进行表示。如:产生一个2×3的全0矩阵,若是zeros(2,3)这种写法就会出现 TypeError: data type not understood 这种错误; 正确的写法是 zeros((2,3))..._typeerror: data type 'uint-8' not understood

机器学习/数据挖掘之中国大牛_机器学习数据空间 知乎-程序员宅基地

文章浏览阅读2.7k次,点赞2次,收藏3次。推荐几个机器学习和数据挖掘领域相关的中国大牛:李航:http://research.microsoft.com/en-us/people/hangli/,是MSRA Web Search and Mining Group高级研究员和主管,主要研究领域是信息检索,自然语言处理和统计学习。近年来,主要与人合作使用机器学习方法对信息检索中排序,相关性等问题的研究。曾在人大听过一场他的讲座,对实际应用_机器学习数据空间 知乎

Source Insight4.0 不显示文件列表/工程文件目录_source insight文件列表不显示-程序员宅基地

文章浏览阅读5.2k次,点赞6次,收藏10次。软件设置里面勾选上Project File List就行了。_source insight文件列表不显示

SS928官方vo例子适配mipi屏-程序员宅基地

文章浏览阅读1k次。最近新购一款SS928的开发板,但其外部只提供了HDMI显示接口,官方未适配MIPI屏,考虑到调试的时候每次找HDMI显示器不方便,就自己画了个板子匹配了一款mipi的显示屏,屏幕为:8.0 inch IPS MIPI 800x1280 AML08021016-31D Amelin Electronic Technology。一般由厂家提供,主要通过mipi命令模式向屏幕写入寄存器配置信息,我这个屏幕参数组成为{地址,长度,数据1,…01 EB-SS928-DC-393型开发板用户快速入门.pdf。_ss928

IDEA maven命令报错:打包程序包com.sun.istack.internal不存在_com.sun.istack.internal.notnull-程序员宅基地

文章浏览阅读1.1w次,点赞10次,收藏6次。错误信息:错误原因:因使用到 @NotNull注解导致,引入相应的包即可解决方案:pom文件中加入如下配置<build> <plugins> <plugin&_com.sun.istack.internal.notnull

随便推点

STM32+AIR800关于温湿度采集上传阿里云以及进行云端下发指令简单的控制_基于stm32温湿度上传云平台-程序员宅基地

文章浏览阅读8.7k次,点赞6次,收藏105次。一、主要功能实现:1、STM32采集温湿度上传至阿里云,进行云端显示2、云端下发指令控制STM32的LED亮灭(直接控制STM32(A)的LED亮灭,以及设置定时时间自动打开和关闭LED)3、云端下发指令通过NRF24L01间接控制第二个STM32(B)的LED亮灭二、 各模块功能划分:1、阿里云物联网云平台:(1)进行云端显示温湿度,给云下设备下达指令2、AIR800:(1)成功..._基于stm32温湿度上传云平台

QT c++ 中使用PostMessage/SendMessage_qt sendmessage-程序员宅基地

文章浏览阅读2.6w次,点赞3次,收藏39次。 PostMessage是Windows API(应用程序接口) 中的一个常用函数,用于将一条消息放入到消息队列中。并且不会等待响应的线程处理消息,而是直接返回。(简单的理解就是异步)。而SendMessage作用一样,但是会等待结果返回(同步)我们先来看PostMessage函数的原型:BOOL WINAPI PostMessage(HWND hWnd, UINT Msg, W..._qt sendmessage

初始对准及组合导航技术_双位置对准-程序员宅基地

文章浏览阅读9.5k次,点赞22次,收藏129次。一、对准是确定坐标系的过程1、初始对准比如说:初始对准就是确定的过程,通过重力加速度和地球自转角速度,其中,天向通过重力加速度确定,水平面的东北向通过地球自转角速度的分量确定。2、坐标系对准比如说,地面车辆中,IMU任意放置,如何确定;可以看出,对准就是确定坐标系的过程。3、矢量定姿<1>双矢量定姿矢量和不共线,因此,、和不共面,其三个矢量构成的矩阵可逆。由于上述矢量构建的姿态矩阵未必满足正交化要求,因此,预先对解算的矢量进行正交及单位化处理。即上述._双位置对准

QT——手动编译qt源代码过程_qt怎么编译-程序员宅基地

文章浏览阅读3.5k次。1.生成解决方案终端进入需要手动编译的项目所在的目录在该目录下执行qmake -project命令,注意qmake前面的路径是qmake的安装路径:/Qt5.11.3/5.11.3/gcc_64/bin/qmake -project该文件夹下会生成.pro文件注意:需要在该文件中添加项目执行过程中需要的模块,笔者的文件中添加了 QT += widgets2.生成Makefile文件..._qt怎么编译

VUE——MVVM框架理解_vue框架是mvvm-程序员宅基地

文章浏览阅读315次。MVVM工作原理MVVM框架理解MVVM的实现原理响应式:模板解析:如何将模板渲染为html小白一枚,正好最近Vue越来越火热,Github上的Star数已经超过了React。而其背后蕴含的MVVM框架思想也一直跟React的组件化开发思想并驾齐驱,在这里也是本着兼收并蓄的思想,多了解一种开发模式。因此通过一些学习资料,写一些自己对MVVM开发思想的理解。废话不多说,咱们进入正题。MVVM框..._vue框架是mvvm

内存修改器对游戏的危害_内存挂容易被检测吗-程序员宅基地

文章浏览阅读3.9k次,点赞4次,收藏10次。内存修改器是游戏外挂里面的一个大类,通过修改器可实现很多魔幻且具有很大破坏性的功能。 下面几张图是使用修改器实现的游戏破解效果。 内存修改器实现的透视功能 ..._内存挂容易被检测吗

推荐文章

热门文章

相关标签