用python语言实现影像里出现人脸的开始时间和结束时间记录到log文件里,名称为face.log
时间: 2024-03-25 07:35:58 浏览: 60
好的,我可以为您提供一份Python代码来实现该功能。不过在此之前,您需要确保已经安装了OpenCV库。
以下是代码:
```python
import cv2
import time
# 加载人脸检测器
face_cascade = cv2.CascadeClassifier('haarcascade_frontalface_default.xml')
# 打开视频文件
cap = cv2.VideoCapture('video.mp4')
# 创建log文件
with open('face.log', 'w') as f:
f.write('开始时间\t\t结束时间\n')
# 初始化
start_time = None
end_time = None
while True:
# 读取视频帧
ret, frame = cap.read()
if ret:
# 转换为灰度图像
gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
# 检测人脸
faces = face_cascade.detectMultiScale(gray, 1.3, 5)
# 如果检测到人脸
if len(faces) > 0:
# 记录开始时间
if start_time is None:
start_time = time.strftime('%Y-%m-%d %H:%M:%S', time.localtime())
# 绘制人脸框
for (x, y, w, h) in faces:
cv2.rectangle(frame, (x, y), (x+w, y+h), (0, 255, 0), 2)
# 如果没有检测到人脸
else:
# 记录结束时间
if start_time is not None:
end_time = time.strftime('%Y-%m-%d %H:%M:%S', time.localtime())
with open('face.log', 'a') as f:
f.write(f'{start_time}\t{end_time}\n')
start_time = None
# 显示结果
cv2.imshow('frame', frame)
# 按q键退出
if cv2.waitKey(1) & 0xFF == ord('q'):
break
else:
break
# 释放资源
cap.release()
cv2.destroyAllWindows()
```
这段代码会打开一个视频文件,并在其中检测人脸。如果检测到人脸,就会记录开始时间;如果没有检测到人脸,就会记录结束时间。最后,所有的开始时间和结束时间都会写入一个名为`face.log`的日志文件中。
阅读全文