基于帧间差分与背景差分的运动目标检测算法python实现
时间: 2023-12-23 21:49:23 浏览: 101
以下是基于帧间差分与背景差分的运动目标检测算法的Python实现:
```python
import cv2
cap = cv2.VideoCapture("video.mp4")
# 定义背景建模器
background_subtractor = cv2.createBackgroundSubtractorMOG2()
while True:
# 读取一帧
ret, frame = cap.read()
# 如果读取失败则跳出循环
if not ret:
break
# 对当前帧进行背景建模
fg_mask = background_subtractor.apply(frame)
# 对前景掩码进行形态学操作,去除噪点
kernel = cv2.getStructuringElement(cv2.MORPH_ELLIPSE, (3, 3))
fg_mask = cv2.morphologyEx(fg_mask, cv2.MORPH_OPEN, kernel)
# 找到前景轮廓并绘制矩形框
contours, hierarchy = cv2.findContours(fg_mask, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
for contour in contours:
rect = cv2.boundingRect(contour)
cv2.rectangle(frame, rect, (0, 255, 0), 2)
# 显示结果
cv2.imshow('frame', frame)
# 按q退出
if cv2.waitKey(30) == ord('q'):
break
cap.release()
cv2.destroyAllWindows()
```
在此实现中,我们首先创建了一个`BackgroundSubtractorMOG2`对象,该对象用于背景建模。然后,我们循环读取每一帧,并使用背景建模器得到前景掩码。接着,我们对前景掩码进行形态学操作,以去除噪点。最后,我们找到前景轮廓,并绘制矩形框。最后,我们显示结果并等待用户按下q键退出。
阅读全文