基于OpenCV的前景物体检测技术
前景物体检测是计算机视觉中的基础任务,广泛应用于视频监控、自动驾驶、人机交互等领域。OpenCV作为开源的计算机视觉库,提供了多种算法实现前景检测。以下将介绍三种主流方法:背景减除法、帧差法、基于深度学习的语义分割,并附代码示例。
背景减除法
背景减除法通过建立背景模型,将当前帧与背景模型对比提取前景。OpenCV提供createBackgroundSubtractorMOG2和createBackgroundSubtractorKNN两种算法。
MOG2算法
高斯混合模型(MOG2)能适应光照变化和动态背景。
import cv2
cap = cv2.VideoCapture("input_video.mp4")
fgbg = cv2.createBackgroundSubtractorMOG2(history=500, varThreshold=16, detectShadows=False)
while True:
ret, frame = cap.read()
if not ret:
break
fgmask = fgbg.apply(frame)
cv2.imshow("Foreground", fgmask)
if cv2.waitKey(30) == 27:
break
cap.release()
cv2.destroyAllWindows()
参数说明
history:用于建模的帧数,值越大适应性越强但延迟越高。varThreshold:像素与模型差异的阈值,值越小灵敏度越高。
帧差法
帧差法通过比较连续帧的像素差异检测运动物体,适合静态背景场景。
import cv2
import numpy as np
cap = cv2.VideoCapture("input_video.mp4")
ret, prev_frame = cap.read()
prev_gray = cv2.cvtColor(prev_frame, cv2.COLOR_BGR2GRAY)
while True:
ret, frame = cap.read()
if not ret:
break
gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
diff = cv2
1567

被折叠的 条评论
为什么被折叠?



