树莓派-opencv虚拟环境搭建(翻译)

Posted _WILLPOWER_

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了树莓派-opencv虚拟环境搭建(翻译)相关的知识,希望对你有一定的参考价值。

参考文章

扩展文件系统

sudo raspi-config
在这里插入图片描述在这里插入图片描述
sudo reboot

安装依赖项

sudo apt-get update && sudo apt-get upgrade

然后我们需要安装一些开发人员工具,包括CMake,它可以帮助我们配置OpenCV的构建过程.

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

接下来,我们需要安装一些映像I/O包,允许我们从磁盘加载各种映像文件格式。此类文件格式的示例包括JPEG、PNG、TIFF等:

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

正如我们需要图像I/O包一样,我们也需要视频I/O包。这些库允许我们从磁盘读取各种视频文件格式,也可以直接处理视频流:
sudo apt-get install libavcodec-dev libavformat-dev libswscale-dev libv4l-dev
sudo apt-get install libxvidcore-dev libx264-dev

OpenCV库附带了一个名为highgui的子模块,用于在屏幕上显示图像和构建基本gui。为了编译highgui模块,我们需要安装GTK开发库
sudo apt-get install libgtk2.0-dev libgtk-3-dev

OpenCV内部的许多操作(即矩阵操作)可以通过安装一些额外的依赖项来进一步优化:
sudo apt-get install libatlas-base-dev gfortran

这些优化库对于资源受限的设备(如Raspberry Pi)尤其重要。

最后,让我们安装Python 2.7和Python 3头文件,以便使用Python绑定编译OpenCV

sudo apt-get install python2.7-dev python3-dev
如果您正在使用新安装的操作系统,这些版本的Python可能已经是最新版本了(您将看到一条终端消息声明这一点)。如果跳过此步骤,您可能会注意到在运行make编译OpenCV时没有找到Python.h头文件相关的错误。

下载OpenCV源代码

cd ~
wget -O opencv.zip https://github.com/Itseez/opencv/archive/3.3.0.zip
unzip opencv.zip

我们希望完整安装OpenCV 3(例如,可以访问SIFT和SURF等功能),因此我们还需要获取OpenCVèu contrib存储库:
wget -O opencv_contrib.zip https://github.com/Itseez/opencv_contrib/archive/3.3.0.zip
unzip opencv_contrib.zip

如果你长期阅读PyImageSearch,那么你就会知道我是virtualenv和virtualenvwrapper的超级粉丝。安装这些软件包并不是一个要求,您完全可以在没有它们的情况下安装OpenCV,但也就是说,我强烈建议您安装它们,因为其他现有的PyImageSearch教程(以及未来的教程)也利用Python虚拟环境。我还假设您在本指南的其余部分中安装了virtualenv和virtualenvwrapper。
那么,既然如此,使用virtualenv和virtualenvwrapper有什么意义呢?
首先,了解虚拟环境是一种特殊的工具非常重要,它通过为每个项目创建独立的Python环境,将不同项目所需的依赖关系保持在不同的位置。
简而言之,它解决了“projectx依赖于version1.X,projecty需要4.X”的困境。它还保持您的网站包整洁,整洁,没有杂乱。
如果您想要一个完整的解释为什么Python虚拟环境是好的实践,请阅读一下RealPython上这篇优秀的博客文章。
使用某种虚拟环境是Python社区的标准做法,因此我强烈建议您也这样做:

sudo pip install virtualenv virtualenvwrapper
sudo rm -rf ~/.cache/pip

既然已经安装了virtualenv和virtualenvwrapper,我们需要更新~/.profile文件,以便在文件底部包含以下行:

# virtualenv and virtualenvwrapper
export WORKON_HOME=$HOME/.virtualenvs
export VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3
source /usr/local/bin/virtualenvwrapper.sh
既然更新了~/.profile,
我们需要重新加载它以确保更改生效。您可以通过以下方式强制重新加载~/.profile文件:
source ~/.profile
创建Python虚拟环境
mkvirtualenv cv -p python2

如果您想使用Python 3,则需要使用以下命令:
mkvirtualenv cv -p python3
我再次强调这一点:cvpython虚拟环境完全独立于Raspbian Stretch下载中包含的默认Python版本。全局站点包目录中的任何Python包都不能用于cv虚拟环境。类似地,在cv的站点包中安装的任何Python包都不能用于Python的全局安装。当您在Python虚拟环境中工作时,请记住这一点,这将有助于避免许多混乱和头痛。

如果你重新启动你的树莓派;注销并重新登录;或者打开一个新终端,您需要使用workon命令重新访问cv虚拟环境。在以前的博客文章中,我看到读者使用mkvirtualenv命令-这是完全不需要的!mkvirtualenv命令只执行一次:实际创建虚拟环境。
之后,您就可以使用workon,然后您将被放到您的虚拟环境中:
source ~/.profile
workon cv

在Raspberry Pi上安装NumPy
假设您已经完成了这一步,那么您现在应该处于cv虚拟环境中(在本教程的其余部分中,您应该一直处于该环境中)。我们唯一的Python依赖是NumPy,一个用于数值处理的Python包:

pip install numpy

编译并安装OpenCV

workon cv
cd ~/opencv-3.3.0/
cd build
cmake -D CMAKE_BUILD_TYPE=RELEASE \\ -D CMAKE_INSTALL_PREFIX=/usr/local \\ -D INSTALL_PYTHON_EXAMPLES=ON \\ -D OPENCV_EXTRA_MODULES_PATH=~/opencv_contrib-3.3.0/modules \\ -D BUILD_EXAMPLES=ON ..

编译前配置交换空间大小.
sudo vim /etc/dphys-swapfile
将CONF_SWAPSIZE修改为1024
要激活新的交换空间,请重新启动交换服务:
sudo /etc/init.d/dphys-swapfile stop
sudo /etc/init.d/dphys-swapfile start

最后,我们现在准备编译OpenCV:
make -j4

问题

编译OPENCV3.4.6出现 FATAL ERROR: OPENCV2/XFEATURES2D/CUDA.HPP: NO SUCH FILE OR DIRECTORY
或者换为绝对路径
在这里插入图片描述
Ubuntu 源码安装opencv320 报错 error: ‘CODEC_FLAG_GLOBAL_HEADER’ was not declared in this scope
在这里插入图片描述

在这里插入图片描述

编译OpenCV 以及 openc_contrib 提示缺少boostdesc_bgm.i文件出错的解决

from os import write
import requests as req
import re
path = "G:/下载/downfile/1111.txt"
guize = re.compile(r"\\"https://raw.*?\\"")
with open(path, 'r') as f:
    try:
        while True:
            line = f.readline()
            result = (re.search(guize, line))
            if(result != None):
                http = line[result.start():result.end()]
                filename = http[1:-1]
                print(filename +"\\r\\n")
                filename = filename.split('/')[-1]
                res = req.get(http[1:-1])
                res.encoding = 'utf-8'
                # # print(res.text)
                with open(filename, 'w+') as f1:
                    f1.write(res.text)
    except:
        print("end the file")

虚拟环境使用rpi

一定要使用pip才行
pip install rpi.gpio

以上是关于树莓派-opencv虚拟环境搭建(翻译)的主要内容,如果未能解决你的问题,请参考以下文章

树莓派搭建python环境

搭建树莓派交叉编译环境

搭建树莓派交叉编译环境

树莓派opencv-python环境搭建最全教程(从零开始)

树莓派学习 2. 开发环境搭建

树莓派人脸识别------opencv-python环境搭建最全教程(从零开始)