我一直试图检测移动的车辆。但是由于云的不同光照条件(不是云的阴影,只是照明),背景减法失败了。
我已在此处上传了我的输入视频 - > Youtube (30secs)
以下是我使用opencv
中提供的各种可用背景减法方法得到的结果import numpy as np
import cv2
cap = cv2.VideoCapture('traffic_finalns.mp4')
#fgbgKNN = cv2.createBackgroundSubtractorKNN()
fgbgMOG = cv2.bgsegm.createBackgroundSubtractorMOG(100,5,0.7,0)
#fgbgGMG = cv2.bgsegm.createBackgroundSubtractorGMG()
#fgbgMOG2 = cv2.createBackgroundSubtractorMOG2()
#fgbgCNT = cv2.bgsegm.createBackgroundSubtractorCNT(15,True,15*60,True)
while(1):
ret, frame = cap.read()
# fgmaskKNN = fgbgKNN.apply(frame)
fgmaskMOG = fgbgMOG.apply(frame)
# fgmaskGMG = fgbgGMG.apply(frame)
# fgmaskMOG2 = fgbgMOG2.apply(frame)
# fgmaskCNT = fgbgCNT.apply(frame)
#
# cv2.imshow('frame',frame)
# cv2.imshow('fgmaskKNN',fgmaskKNN)
cv2.imshow('fgmaskMOG',fgmaskMOG)
# cv2.imshow('fgmaskGMG',fgmaskGMG)
# cv2.imshow('fgmaskMOG2',fgmaskMOG2)
# cv2.imshow('fgmaskCNT',fgmaskCNT)
k = cv2.waitKey(20) & 0xff
if k == 27:
break
cap.release()
cv2.destroyAllWindows()
(图片下方 - >相框编号 - 977)
答案 0 :(得分:1)
1]通过OpenCV背景扣除改善结果
cv2.bgsegm.createBackgroundSubtractorMOG()
的参数以获得最佳效果...玩弄阈值并查看你得到的结果cv2.GaussianBlur()
cv2.equalizeHist()
,以便提高框架的对比度无论如何,你说你正试图探测移动物体。如今有许多现代方法使用深度学习来进行物体检测
2]使用tensorflow object detection api
3]尝试Opencv Optical Flow
怎么样?4]简单减法
environment_frame
results = environment_frame - current_frame
np.sum(results)
大于阈值,那么我们说有一个对象np.sum(results)
大于阈值,那么我们就知道有一个移动的对象但是在哪里??? <强> ----------------------------修订--------------- ------------------------- 强>