使用python做一个代码较长的OpenCV的行人检测代码
时间: 2024-02-21 16:59:05 浏览: 73
使用python+OpenCV+yolov5实现行人目标检测.zip
5星 · 资源好评率100%
好的,以下是一个比较完整的基于OpenCV的行人检测程序示例,使用的是HOG+SVM方法:
```python
import cv2
# 加载HOG+SVM分类器
hog = cv2.HOGDescriptor()
hog.setSVMDetector(cv2.HOGDescriptor_getDefaultPeopleDetector())
# 读取视频
cap = cv2.VideoCapture("video.mp4")
# 获取视频帧率和尺寸
fps = int(cap.get(cv2.CAP_PROP_FPS))
size = (int(cap.get(cv2.CAP_PROP_FRAME_WIDTH)), int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT)))
# 创建视频输出对象
fourcc = cv2.VideoWriter_fourcc(*'XVID')
out = cv2.VideoWriter('output.avi', fourcc, fps, size)
while cap.isOpened():
# 读取视频帧
ret, frame = cap.read()
if ret:
# 行人检测
(rects, weights) = hog.detectMultiScale(frame, winStride=(4, 4), padding=(8, 8), scale=1.05)
# 画出检测结果
for (x, y, w, h) in rects:
cv2.rectangle(frame, (x, y), (x + w, y + h), (0, 0, 255), 2)
# 显示结果
cv2.imshow("Pedestrian Detection", frame)
# 写入输出视频
out.write(frame)
# 按下 q 键退出
if cv2.waitKey(1) & 0xFF == ord('q'):
break
else:
break
# 释放资源
cap.release()
out.release()
cv2.destroyAllWindows()
```
这个程序会读取名为“video.mp4”的视频,并使用HOG+SVM方法进行行人检测,然后将检测结果在视频中用红框标出,并输出到名为“output.avi”的视频中。你可以根据自己的需要修改程序中的视频路径和其他参数。程序中还包含了一些额外的逻辑,例如帧率、尺寸的获取,视频输出对象的创建和释放等。
阅读全文