变化检测比值法opencv代码
时间: 2024-08-21 19:01:36 浏览: 54
harris角点检测c语言版本及opencv源码
5星 · 资源好评率100%
变化检测是计算机视觉领域的一个重要任务,OpenCV 提供了多种方法来检测场景中的变化。变化检测比值法通常是基于连续帧之间像素差异来判断是否有变化。这里是一个简单的基于OpenCV的光流法(Optical Flow)的变化检测的Python示例:
```python
import cv2
import numpy as np
def calculate_optical_flow(prev_frame, current_frame):
flow = cv2.calcOpticalFlowFarneback(prev_frame, current_frame,
None, # 预测初值
0.5, # 进一步细化
3, # 连接步长
5, # 匹配窗口大小
1.2, # 距离阈值
0, # 相似性门槛
cv2.OPTFLOW_FARNEBACK_GAUSSIAN)
magnitude, angle = cv2.cartToPolar(flow[..., 0], flow[..., 1])
return magnitude, angle
prev_frame = cv2.imread('frame_0.jpg', 0) # 替换为前一帧路径
current_frame = cv2.imread('frame_1.jpg', 0) # 替换为当前帧路径
magnitude, angle = calculate_optical_flow(prev_frame, current_frame)
# 创建一个与输入图像大小相同的掩码,表示变化区域
change_mask = cv2.threshold(magnitude, 15, 255, cv2.THRESH_BINARY)[1]
# 结合上一帧和当前帧,用白色显示变化区域
combined_image = cv2.addWeighted(prev_frame, 0.6, current_frame, 0.4, 0)
cv2.imshow('Change Detection', combined_image)
cv2.imshow('Change Mask', change_mask)
cv2.waitKey(0)
cv2.destroyAllWindows()
阅读全文