超简单教你在树莓派上安装opencv

Posted 流 浪 猫

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了超简单教你在树莓派上安装opencv相关的知识,希望对你有一定的参考价值。

超简单教你在树莓派上安装opencv(二)


前言

使用须知:本文章主要是针对 Python3.9.2 版本的Python安装 OpenCv,如果你的 Python 版本不是 Python3.9.2,而是在3.8 以下,你可以点击 这里的教程 来安装OpenCv。另外有的版本好像是 Python3.9.3,本文方法应该不适用。

一、如何基于python3.9.2安装OpenCv?

1.1 查看自己系统位数及Python版本,跟对教程

  因为自己直接下载的官方32位操作系统的镜像,在写博客时未考虑到系统位数问题,在此提前告知各位,因作者本人未尝试在64位系统上进行安装OpenCv,所以不清楚在安装过程中是否会有报错以及是否能够安装成功,大家可以进行尝试。
  在此感谢用户 qq_46120289 提出该问题

# 大家可以使用下方指令查看自己系统位数
getconf LONG_BIT

  因为不同的Python版本操作方法不同,所以跟对教程很重要。

1.2 换源

  大家可以跟着我之前的这篇文章换源,也可以跟着我接下来的操作换源。其实之前的换源方法有点麻烦,建议大家使用接下来的换源方法。

wget -qO- https://tech.biko.pub/resource/rpi-replace-apt-source-buster.sh | sudo bash

  将上述代码复制到 LX_终端 ,如下图

  回车确定,换源成功,如下图

1.3 更新

  在终端对新换的源内容更新,分别输入下面两行代码更新,如下图

sudo apt-get update
sudo apt-get upgrade

1.4 安装依赖

  在终端依次输入下面内容,逐条安装,如下图

大家在执行下面第三条语句时如果出现红色报错,可以尝试 用户 不知道怎么谈恋爱 提供的解决方案 ,并在此感谢该用户的经验分享 !
    如果下载 sudo apt-get install libqtgui4 报错
    可以先下载 sudo apt-get install aptitude
    然后输入 sudo aptitude install libqtgui4

sudo apt-get install libatlas-base-dev
sudo apt-get install libjasper-dev
sudo apt-get install libqtgui4
sudo apt-get install python3-pyqt5
sudo apt install libqt4-test


  过程中可能有的装不上,不用担心,注意看报错信息,不是红色报错的,就不用担心,要么就是已经安装过了,要么就是现存更高版本的,不影响后续操作。如下图


  将上述操作完成后再次 sudo apt-get update 一次

1.5 查看自己树莓派的架构来确定下载什么包

  在 LX_终端 输入下面的代码来查看自己Linux的架构

uname -a


  上面这张图里的 Linux 系统用的是 armv7l 架构,除此外还有 armv6l 架构,知道自己的系统架构后我们进行下一步

1.6 下载自己需要的 whl 包

这一步非常简单,我们已经快完成一半了,加油!

  进入该网站下载我们需要的包,进入链接后如下图

  接下来我以 OpenCv4.5.5.62 为例下载安装,当然你也可以根据自己需求安装其他版本,前提是需要支持你的 Python 版本

  显然我需要下载上图中箭头指向的 whl 文件。如何知道自己需下载哪一个呢?这里我讲一下,笔者这里讲解的是箭头所指的 whl 包,它的OpenCV版本为4.5.5.62,所需Python版本为3.9【cp39对应Python3.9,cp37对应Python3.7】,需使用armv7l架构的Linux系统

  接下来我们需要将下载的 whl 文件传输到树莓派上,如何传输看大家自己的选择,我这里使用 VNC Viewer实现文件传输,当然也可以选择使用 FileZilla 传输,不管用什么传输,希望大家把文件放在树莓派桌面,方便下一步操作。

1.7 安装OpenCv

  来到这里,你需要确保前期准备工作已经准备完毕,不然的话可能会报错。如果前期工作已完成,那么接下来就正式安装 OpenCv

 我们需要先使用下面代码进入桌面

cd Desktop

 然后输入 pip install opencv 这时候我们输入到大概下图这样子,因为 OpenCv 版本号长又容易出错,所以这里直接按一下 Tab 键,让电脑自动补全即可,完成后如下面第二张图

 直接回车确定,等待一分钟,就会出现下面的界面,表示安装成功

二、报错了?!

开心吗?安装成功了,不过很多人很快便会发现在导入 OpenCv 时报错,但也有的不会报错

2.1 报出如下错误

 如果不出意外,很多人在导入OpenCv 时报如下图所示错误

2.2 为啥会报错

 因为 OpenCv 跟 numpy 相关联,版本需要一致才行,知道错误原因了就好办了,先看看自己的 numpy 版本(你们可以不进行这步,可以直接更新 numpy ,我这里是为了给大家展示)

 大家可以直接从这里开始,输入如下命令更新 numpy

pip3 install -U numpy


 警告,红色警告,不过还是能成功安装的,接下来再看看 numpy 版本

 OK, numpy 版本已经跟上了,下一步,测试 OpenCv 是否可用

2.3 测试OpenCv

 导入 OpenCv 测试,并查看其版本号是否正确

 没有报错,完结撒花!!!!

三、作者有话说

如果你觉得这篇文章有帮助到你,能否给作者点个赞鼓励一下呢?同时这也将会帮助到更多需要他的人

树莓派01——初始化配置OpenCV3的安装

参考资料:

  【为树莓派更换国内镜像源】https://blog.csdn.net/la9998372/article/details/77886806/

  【子豪兄教你在树莓派上安装OpenCV】https://zhuanlan.zhihu.com/p/46032511

  【树莓派安装OpenCV3完整过程】https://blog.csdn.net/kyokozan/article/details/79192646

 

关键词:

  树莓派 更新源 Python版本切换 OpenCV实时人脸识别 

一、准备工作

  1、软件

    1.镜像工具:win32diskimager-1.0.0

    2.SD卡格式化工具:SDCardFormatterv5_WinEN

    【链接:https://pan.baidu.com/s/1CLL-FWZz2UMQdkUjzUyEWg 提取码:lde6 】

    3.树莓派官方系统:2018-11-13-raspbian-stretch-full.img

    【下载地址https://www.raspberrypi.org/downloads/raspbian/    下载Raspbian Stretch with desktop and recommended software】

  2、硬件

    树莓派3B+、32G TF卡(16G及以上)、摄像头、键盘鼠标显示器……

  3、系统烧写

    1.SD格式化:Format即可

                  技术图片

    2.系统烧写,选择镜像文件,确认烧录设备后,点击写入,大概5分钟后,提示写入成功,点击退出,弹出SD卡,插树莓派上

                            技术图片

 

二、系统安装及配置

  1、开始

    SD卡插好后,接上电源(勿用电脑USB,建议直接使用手机充电头,否则开机屏幕右上角显示一个?符号,表示电力不足),接上显示器键盘鼠标……

    系统自动安装,进入桌面后,有一个向导程序,可以先选择地区,设置密码,选择WIFI网络。注意,后面一步提示更新软件,请直接点Skip跳过去,之后一律Skip,然后会自动重启。(等下一步更新源之后再去更新)

  2、更新源

    编辑/etc/apt/sources.list文件:

      sudo nano /etc/apt/sources.list

    用#注释原内容,用以下内容替换:

      deb http://mirrors.tuna.tsinghua.edu.cn/raspbian/raspbian/ stretch main contrib non-free rpi

      deb-src http://mirrors.tuna.tsinghua.edu.cn/raspbian/raspbian/ stretch main contrib non-free rpi

    编辑/etc/apt/sources.list.d/raspi.list文件:

      sudo nano /etc/apt/sources.list.d/raspi.list

    用#注释原内容,用以下内容替换:

      deb http://mirror.tuna.tsinghua.edu.cn/raspberrypi/ stretch main ui

      deb-src http://mirror.tuna.tsinghua.edu.cn/raspberrypi/ stretch main ui

     最后更新:

      sudo apt-get update

      sudo apt-get upgrade

  3、下载输入法

    sudo apt-get install fcitx fcitx-googlepinyin fcitx-module-cloudpinyin fcitx-sunpinyin

  4、Python版本切换

    输入python -V查看版本

    sudo rm usr/bin/python

    sudo ln -s usr/bin/python3.5 usr/bin/python

    再输入python -V查看版本

  5、打开摄像头等功能

    1.使能摄像头

      sudo raspi-config

      选择第5项【Interfacing Options】,选择【P1 Camera】,一直选【是】

      除此外,也可以点任务栏的树莓派Logo,首选项->Raspberry Pi Configuration,在Interfaces中,Camera选项,点Enable

    2.相关设置

      输入:sudo nano /etc/modules

      // 进入编辑界面后,在末尾添加输入

        snd-bcm2835

        bcm2835-v4l2

      【先按键盘上的ctrl+o,再按回车保存,再按ctrl+x退出nano编辑器回到命令行界面。】

    3.验证

      输入:vcgencmd get_camera

      出现下面的情况,证明设置成功

      技术图片

四、OpenCV

  1、安装numpy

    sudo pip3 install numpy

  2、扩大目录

    sudo raspi-config

    选择Advanced Options

    选择Expand Filesystem,将根目录扩展到这个SD卡,充分利用SD卡的存储空间。如果不进行这一步,后续命令会出现卡死。

    退出设置界面,重启树莓派。

 

     sudo reboot

  3、安装

    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

 

    git clone https://github.com/opencv/opencv.git

    //下载的文件可能需要解压

    //打开下载的文件

    cd opencv-3.4.3

    mkdir release

    cd release

    //直接复制下面两行

    cmake -D CMAKE_BUILD_TYPE=RELEASE \\

     -D CMAKE_INSTALL_PREFIX=/usr/local ..

    //编译(这步耗时较长,2小时左右)

    sudo make

    //安装

    sudo make install

    //更新动态链接库

    sudo ldconfig

验证安装OpenCV是否成功,成功后,会显示灰度图,中心有圆圈

 1 # -*- coding: utf-8 -*-
 2 __author__ = "kyoRan"
 3 
 4 import cv2
 5 
 6 cap = cv2.VideoCapture(0)                                        # 打开摄像头
 7 print("VideoCapture is opened?", cap.isOpened())
 8 
 9 while(True):
10 
11     ret, frame = cap.read()                                      # 读取摄像头图像
12     center = (frame.shape[1]//2, frame.shape[0]//2)              # 图像中心点位置
13 
14     gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)               # 转灰度
15     cv2.circle(gray, center=center, radius=100, color=(0,0,255)) # 画圆
16     cv2.imshow("frame", gray)                                    # 显示图片
17 
18     if cv2.waitKey(1) & 0xFF == ord(q):
19         break
20 
21 cap.release()            # 释放摄像头
22 cv2.destroyAllWindows()  # 关闭所有窗口

 

 

 

五、实时人脸识别设置

 

 代码如下,其中,haarcascade_frontalface_default.xml文件在, opencv-3.4.3/data/haarcascades中

 1 import numpy as np
 2 import cv2
 3  
 4 faceCascade = cv2.CascadeClassifier(haarcascades/haarcascade_frontalface_default.xml)
 5  
 6 cap = cv2.VideoCapture(0)
 7 cap.set(3,640) # set Width
 8 cap.set(4,480) # set Height
 9  
10 while True:
11     ret, img = cap.read()
12     img = cv2.flip(img, -1)
13     gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
14     faces = faceCascade.detectMultiScale(
15         gray,    
16         scaleFactor=1.2,
17         minNeighbors=5,    
18         minSize=(20, 20)
19     )
20  
21     for (x,y,w,h) in faces:
22         cv2.rectangle(img,(x,y),(x+w,y+h),(255,0,0),2)
23         roi_gray = gray[y:y+h, x:x+w]
24         roi_color = img[y:y+h, x:x+w] 
25  
26     cv2.imshow(video,img)
27  
28     k = cv2.waitKey(30) & 0xff
29     if k == 27: # press ‘ESC‘ to quit
30         break
31  
32 cap.release()
33 cv2.destroyAllWindows()

 

 

 

 

 

 

 

以上是关于超简单教你在树莓派上安装opencv的主要内容,如果未能解决你的问题,请参考以下文章

树莓派上的浏览器安装

转用树莓派搭建web服务器

【超详细】手把手教你在Linux下安装Python

vnc连接树莓派上的kali linux连接成功,但是画面是一片灰色,哪里出问题了?

在树莓派上安装MySQL数据库和简单使用方法

手把手教你在centos上配置Django项目(超详细步骤)