TA的每日心情 | 开心 半小时前 |
---|
签到天数: 1075 天 连续签到: 3 天 [LV.10]以坛为家III
|
本帖最后由 TLLED 于 2024-8-7 10:24 编辑
一、USB摄像头设备
1.1、硬件连接
1.2、检测USB摄像头设备。
二、测试USB摄像头
python测试USB摄像头
2.1、代码
am.py
- import cv2
- import datetime
- data = int(input("请输出摄像头编号 0或1或2:"))
- cap = cv2.VideoCapture(data)
- if not cap.isOpened():
- print("无法打开摄像头")
- exit()
- while True:
- ret, frame = cap.read()
- cv2.imshow('usb_camera', frame)
- if cv2.waitKey(1) & 0xFF == ord('q'):
- break
- cap.release()
- cv2.destroyAllWindows()
复制代码
2.2、运行
执行python3 am.py
显示图像
三、人脸检测
3.1、下载数据包opencv源码中提供了一些识别算法,人的脸部、眼睛、身体、上半身等,使用这些算法可对身体部位进行识别。
开发板安装的opencv版本是4.5.2,下面下载对应的版本数据。(我在板卡系统中没有找到下面数据,若有这些数据可不用下载)
下载地址:https://github.com/opencv/opencv/tree/4.5.2
下载只需要data下面的xml文件
3.2、测试代码
am2.py
- import cv2
- #获取opencv版本
- print(cv2.getVersionString());
- #检测脸部和眼睛
- face_cascade = cv2.CascadeClassifier("/home/root/data/haarcascades/haarcascade_frontalface_default.xml")
- eye_cascade = cv2.CascadeClassifier( "/home/root/data/haarcascades/haarcascade_eye.xml")
-
- cap = cv2.VideoCapture(0)
- while True:
- ret, frame = cap.read()
-
- gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
- faces = face_cascade.detectMultiScale(gray, 1.1, 4)
- for (x, y, w, h) in faces:
- cv2.rectangle(frame, (x, y), (x+w, y+h), (255, 0, 0), 2)
- roi_gray = gray[y:y+h, x:x+w]
- eyes = eye_cascade.detectMultiScale(roi_gray)
- for (ex, ey, ew, eh) in eyes:
- cv2.rectangle(frame, (x+ex, y+ey), (x+ex+ew, y+ey+eh), (0, 255, 0), 2)
- cv2.imshow('usb_camera_face', frame)
- if cv2.waitKey(1) & 0xFF == ord('q'):
- break
- cap.release()
- cv2.destroyAllWindows()
复制代码
3.3、测试结果
执行命令:python3 am2.py
在眼睛和脸部位置画标记。
|
|