本帖最后由 天意无罪 于 2022-12-10 23:33 编辑
接近年关,事情真的多啊,最近忙写投标文件,连周末都没有休息,每天工作到凌晨1~2点,睡5个小时左右又得起床上班,哎,真的是累的啊。何况年龄大了,感觉熬夜越来越吃力了。
今天和同事一起终于把投标文件搞定了,奈何行空板的评测已经有1周多时间没有更新了,今天在怎么也得更新一篇啊。
上篇评测,通过行空板自带unihiker库的Audio类实现了音乐播放功能,验证了购买的USB免驱声卡可以使用,为后面的AI语音识别应用做好准备,接下来就是测试验证在DFRobot官网购买的USB免驱摄像头是否可以正常使用,所以本次评测内容主要就是测试摄像头功能是否正常,主要从以下2方面进行测试:
(1)MediaPipe应用演示
(2)使用OpenCV库捕获摄像头图像并实时显示
(一)MediaPipe案例演示
(1)源码下载
DFRobot提供了可以直接在行空板上运行的MediaPipe应用案列,通过以下链接可以下载源码:
百度网盘:https://pan.baidu.com/s/1H8yVFjFTEvZIrgwzDYpVEA?pwd=aixk
Gitee:https://gitee.com/unihiker/unihiker-aidemo
我是在百度网盘上下载的源码,下载后解压,然后通过samba文件共享功能上传到行空板上的example目录下,example文件夹是我新建用于存放DFRobot的演示案例的。
(2)安装支持库
在Mind+软件中,先运行“1-Install_dependency.py”安装程序,用于安装opencv库和MediaPipe库。
说明:也可以直接在行空板显示屏界面,找到media_pipe目录,然后点击运行“1-Install_dependency.py”安装程序;
图1
图2
运行1-Install_dependency.py程序后,Python会自动通过pip命令安装上述2个库文件,安装成功后会在终端中显示相关信息(PS:此处忘了截图)。
该案例中提供了:人脸检测、面部识别、手势识别、人体姿势识别、人体全身姿态识别等7个功能演示程序;
图3
(3)功能演示
(二)使用OpenCV库捕获摄像头图像并实时显示
个人初次接触OpenCV还是当年读大学时,那时候有个项目需要编写一个上位机软件,这个上位机软件需要操作摄像头进行图像抓拍,并通过图像处理算法计算被测物体的一些关键参数。由于当时我开发上位机都是用的Visual Basic语言,对C++不熟悉,于是将OpenCV的一些图像处理算法硬生生地用Visual Basic给写出来了,最后也实现了功能。
这一步,通过调用OpenCV库,捕获摄像头的实时图像,并显示在行空板自带的2.8寸屏幕上。
(1)安装OpenCV库
由于在上一步演示操作中,已经安装了OpenCV库,所以此处不用在单独安装。
(2)编写代码
import cv2
#False:不旋转屏幕(竖屏显示,上下会有白边)
#True:旋转屏幕(横屏显示)
screen_rotation = True
cap = cv2.VideoCapture(0) #设置摄像头编号,如果只插了一个USB摄像头,基本上都是0
cap.set(cv2.CAP_PROP_FRAME_WIDTH, 320) #设置摄像头图像宽度
cap.set(cv2.CAP_PROP_FRAME_HEIGHT, 240) #设置摄像头图像高度
cap.set(cv2.CAP_PROP_BUFFERSIZE, 1) #设置OpenCV内部的图像缓存为1,提高图像的实时性。
cv2.namedWindow('camera',cv2.WND_PROP_FULLSCREEN) #窗口全屏
cv2.setWindowProperty('camera', cv2.WND_PROP_FULLSCREEN, cv2.WINDOW_FULLSCREEN) #窗口全屏
while cap.isOpened():
success, image = cap.read()
if not success:
print("Ignoring empty camera frame.")
continue
if screen_rotation: #是否要旋转屏幕
image = cv2.rotate(image, cv2.ROTATE_90_COUNTERCLOCKWISE) #旋转屏幕
cv2.imshow('camera', image)
if cv2.waitKey(5) & 0xFF == 27:
break
cap.release()
代码参考了DFrobot论坛上的一篇帖子:https://mc.dfrobot.com.cn/thread-312867-1-1.html,所以此处不再对代码进行详细说明。
(3)功能演示