用python实现运动目标检测
时间: 2023-09-27 17:06:50 浏览: 101
运动目标检测是计算机视觉中的一个重要问题,可以通过Python中的OpenCV库来实现。以下是一个简单的运动目标检测代码示例:
```python
import cv2
cap = cv2.VideoCapture(0) # 打开摄像头
ret, frame1 = cap.read() # 读取第一帧
prvs = cv2.cvtColor(frame1, cv2.COLOR_BGR2GRAY) # 将第一帧转换为灰度图像
while True:
ret, frame2 = cap.read() # 读取当前帧
next = cv2.cvtColor(frame2, cv2.COLOR_BGR2GRAY) # 将当前帧转换为灰度图像
# 计算光流
flow = cv2.calcOpticalFlowFarneback(prvs, next, None, 0.5, 3, 15, 3, 5, 1.2, 0)
# 可视化光流
mag, ang = cv2.cartToPolar(flow[..., 0], flow[..., 1])
hsv = cv2.cvtColor(frame2, cv2.COLOR_BGR2HSV)
hsv[..., 0] = ang * 180 / np.pi / 2
hsv[..., 2] = cv2.normalize(mag, None, 0, 255, cv2.NORM_MINMAX)
rgb = cv2.cvtColor(hsv, cv2.COLOR_HSV2BGR)
# 显示结果
cv2.imshow('frame2', rgb)
# 更新第一帧
prvs = next
# 按下q键退出循环
if cv2.waitKey(1) & 0xFF == ord('q'):
break
cap.release()
cv2.destroyAllWindows()
```
这段代码中,我们使用了Farneback算法来计算光流,并将光流可视化为彩色图像。通过比较连续帧之间的光流图像,我们可以检测到运动的目标。您可以根据实际需求调整算法参数以获得更好的检测效果。
阅读全文