树莓派小项目:人脸识别,拯救你吃灰的板子

树莓派小项目:人脸识别,拯救你吃灰的板子_第1张图片

我崩溃了,我居然没有保存文章,看着空白的屏幕,我的心情逐渐低落,得,又要重写。

我手上有几块板子,因为之前项目得需要,就想将ubuntu20.04刷入树莓派,但想将ubuntu刷入树莓派先要将ubuntu server刷入树莓派再安装桌面,太麻烦了,新版又只能安装22.04,得给我整得刷系统就搞到心累,不管他,我先掏出我的另一张sd卡来整个好玩的先(之前没考虑到有vnc可以用,今晚和朋友交流了一下发现好像能用vnc)。

树莓派小项目:人脸识别,拯救你吃灰的板子_第2张图片

(1)器材准备

一块树莓派4b4g版(吐槽他没有全尺寸的HDMI接口,我拿转接就无法供电,供电就无法转接),一张SD卡32g及以上,一块不知道哪里掏出来的屏幕,一个usb摄像头。

(2)树莓派系统

(1)安装树莓派系统

Raspberry Pi OS – Raspberry Pi

先提前安装树莓派系统的安装工具

打开树莓派系统安装工具

树莓派小项目:人脸识别,拯救你吃灰的板子_第3张图片

选择需要写入的系统

树莓派小项目:人脸识别,拯救你吃灰的板子_第4张图片

树莓派小项目:人脸识别,拯救你吃灰的板子_第5张图片

找到自己合适的系统

树莓派小项目:人脸识别,拯救你吃灰的板子_第6张图片

选择SD卡

树莓派小项目:人脸识别,拯救你吃灰的板子_第7张图片

选择烧录,这里我已经烧录过了,就示范了。

(2)开机

将烧录好的SD卡装入树莓派,接通电源等待开机。

开完机,先换源(我这里就不教了):

树莓派换源教程_萌新源的博客-CSDN博客

vim用不了的可以用vi

当然还是建议安装vim来使用

(3)开启树莓派的ssh

ok,现在打开我们的树莓派终端,输入这里是打开我们的ssh:

sudo raspi-config

选择Interface Options

 树莓派小项目:人脸识别,拯救你吃灰的板子_第8张图片

选择SSH

树莓派小项目:人脸识别,拯救你吃灰的板子_第9张图片

选择yes

树莓派小项目:人脸识别,拯救你吃灰的板子_第10张图片

选择确定

树莓派小项目:人脸识别,拯救你吃灰的板子_第11张图片

选择Finsh

树莓派小项目:人脸识别,拯救你吃灰的板子_第12张图片

接着在树莓派终端输入:

hostname -I

树莓派小项目:人脸识别,拯救你吃灰的板子_第13张图片

这样我们就能看到我们的IP了

(4)连接树莓派的ssh

随后在我们的window电脑上按住win+r,输入:

cmd

树莓派小项目:人脸识别,拯救你吃灰的板子_第14张图片

在终端中输入:

ssh 树莓派的用户名@ip

树莓派小项目:人脸识别,拯救你吃灰的板子_第15张图片

这样我们就能用我们的windows连接我们的树莓派了

更新软件,终端中输入:

sudo apt upgrade

树莓派小项目:人脸识别,拯救你吃灰的板子_第16张图片

输入:

sudo apt update

树莓派小项目:人脸识别,拯救你吃灰的板子_第17张图片

(5)创建我们的python虚拟环境 

创建我们的python虚拟环境venv,在终端中输入:

python3 -m venv venv

进入我们的虚拟环境:

cd venv
source bin/action

退出虚拟环境(这里只是给出命令,不需要执行):

deactivate

下载opencv

pip insall opencv-contrib-python==4.5.4.60

下载完成后我们去导入我们的头文件输入:

python
import cv2

我们来查看他的路径:

cv2.__file__

这里自己输入时会以为是一个下划线,就会出现下面的情况:


 完成后我们退出我们的python环境:

quit()

 安装个依赖

sudo  apt -y install libatlas-base-dev

我们查看一下我们的库:

pip list

树莓派小项目:人脸识别,拯救你吃灰的板子_第18张图片

(6)连接usb摄像头进行测试

将我们的usb摄像头连接树莓派,在windows终端中输入(这一步是为了检测我们的usb摄像头是否接入我们的树莓派):

ls /dev/video*

通常情况下我们额usb摄像头是video1或者video0 

(7)编写测试文件

当我们检测到我们额usb摄像头后,可以编写一个测试代码来测试我们的usb摄像头

在我们的windows终端中输入:

vim test_camera.py

使用vim编辑器进行编辑:

import cv2

cap = cv2.VideoCapture(0)

while True:
    ret, frame = cap.read()
    if ret:
        cv2.imshow("frame",frame)

    if cv2.waitKey(1) & 0xFF == ord("q"):
        break

cap.release()
cv2.destroyAllWindows()

树莓派小项目:人脸识别,拯救你吃灰的板子_第19张图片

代码输入保存后我们打开我们的树莓派的终端进入到我们的python虚拟环境,然后在终端中输入:

python test_camera.py

这时候我们的摄像头就会开始工作(这里建议使用好一点的usb摄像头,我的usb摄像头老是断连,搞得我挺烦的)

树莓派小项目:人脸识别,拯救你吃灰的板子_第20张图片

(8)分类器(这里认识一下就好,想玩视觉这块的话感觉还要学挺多东西的)

在我们的windows终端中输入:

python
import cv2
print(cv2.__file__)

树莓派小项目:人脸识别,拯救你吃灰的板子_第21张图片

这时就可以看到一条路径

退出我们额python空间cd到这条路径下

cd lib/python3.9/site-packages/cv2/

我们会发现这条路径下会有个data的文件

我们在终端中输入:

tree data/

树莓派小项目:人脸识别,拯救你吃灰的板子_第22张图片

我们就可以看到我们的很多的分类器了

(9)修改我们的代码来实现人脸识别

vim test_camera.py
import cv2
import numpy as np

cap = cv2.VideoCapture(0)
face_cascade = cv2.CascadeClassifier(cv2.data.haarcascades + "haarcascade_frontalface_alt2.xml")

print(face_cascade)

while True:
    ret,frame = cap.read()
    if ret:
        gray = cv2.cvtColor(frame,cv2.COLOR_BGR2GRAY)
        faces = face_cascade.detectMultiScale(gray,scaleFactor=1.5,minNeighbors=6)


#画个框来标记人脸
        for(x,y,w,h) in faces:
            cv2.rectangle(frame,(x,y),(x+w,y+h),(25,0,0),3)
            print(x,y,w,h)

        cv2.imshow("gray",gray)
        cv2.imshow("frame",frame)

    if cv2.waitKey(1) & 0xFF == ord("q"):
        break
cap.release()
cv2.destroyAllWindows()



ok,执行该程序就能识别人脸了,但识别精度较低哦 

树莓派小项目:人脸识别,拯救你吃灰的板子_第23张图片

你可能感兴趣的:(机器视觉,树莓派,计算机视觉)