我崩溃了,我居然没有保存文章,看着空白的屏幕,我的心情逐渐低落,得,又要重写。
我手上有几块板子,因为之前项目得需要,就想将ubuntu20.04刷入树莓派,但想将ubuntu刷入树莓派先要将ubuntu server刷入树莓派再安装桌面,太麻烦了,新版又只能安装22.04,得给我整得刷系统就搞到心累,不管他,我先掏出我的另一张sd卡来整个好玩的先(之前没考虑到有vnc可以用,今晚和朋友交流了一下发现好像能用vnc)。
一块树莓派4b4g版(吐槽他没有全尺寸的HDMI接口,我拿转接就无法供电,供电就无法转接),一张SD卡32g及以上,一块不知道哪里掏出来的屏幕,一个usb摄像头。
Raspberry Pi OS – Raspberry Pi
先提前安装树莓派系统的安装工具
打开树莓派系统安装工具
选择需要写入的系统
找到自己合适的系统
选择SD卡
选择烧录,这里我已经烧录过了,就示范了。
将烧录好的SD卡装入树莓派,接通电源等待开机。
开完机,先换源(我这里就不教了):
树莓派换源教程_萌新源的博客-CSDN博客
vim用不了的可以用vi
当然还是建议安装vim来使用
ok,现在打开我们的树莓派终端,输入这里是打开我们的ssh:
sudo raspi-config
选择Interface Options
选择SSH
选择yes
选择确定
选择Finsh
接着在树莓派终端输入:
hostname -I
这样我们就能看到我们的IP了
随后在我们的window电脑上按住win+r,输入:
cmd
在终端中输入:
ssh 树莓派的用户名@ip
这样我们就能用我们的windows连接我们的树莓派了
更新软件,终端中输入:
sudo apt upgrade
输入:
sudo apt update
创建我们的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__
这里自己输入时会以为是一个下划线,就会出现下面的情况:
quit()
安装个依赖
sudo apt -y install libatlas-base-dev
我们查看一下我们的库:
pip list
将我们的usb摄像头连接树莓派,在windows终端中输入(这一步是为了检测我们的usb摄像头是否接入我们的树莓派):
ls /dev/video*
通常情况下我们额usb摄像头是video1或者video0
当我们检测到我们额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()
代码输入保存后我们打开我们的树莓派的终端进入到我们的python虚拟环境,然后在终端中输入:
python test_camera.py
这时候我们的摄像头就会开始工作(这里建议使用好一点的usb摄像头,我的usb摄像头老是断连,搞得我挺烦的)
在我们的windows终端中输入:
python
import cv2
print(cv2.__file__)
这时就可以看到一条路径
退出我们额python空间cd到这条路径下
cd lib/python3.9/site-packages/cv2/
我们会发现这条路径下会有个data的文件
我们在终端中输入:
tree data/
我们就可以看到我们的很多的分类器了
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,执行该程序就能识别人脸了,但识别精度较低哦