我在Python 2.7上使用OpenCV 2.4.9。我正在尝试使用OpenCV的背景减法。它应该以某种方式根据视频输入确定前景中的哪些对象以及后者中的其他对象(?)。但是,结果输出看起来好像只是从后续帧中减去第一帧。这是代码:
import numpy as np
import cv2
cap = cv2.VideoCapture(0)
BSGuy = cv2.BackgroundSubtractorMOG()
while(1):
ret, frame = cap.read()
fgmask = BSGuy.apply(frame)
cv2.imshow('Frame', fgmask)
k = cv2.waitKey(30) & 0xff
if k == 27:
break
cap.release()
cv2.destroyAllWindows()
我正在尝试上传图片以澄清,但我发现我需要有声望才能发布。 (我是新来的。)问题在于,除了我现在的“形象”之外,程序开始运行时我的初始“图像”仍然在屏幕上。如何删除它?
感谢。
答案 0 :(得分:0)
我看到您使用过cap = cv2.VideoCapture(0)
。这需要相机输入。
OpenCV的最新版本是4.3.0。
我用cv2.createBackgroundSubtractorMOG2()
代替了cv2.BackgroundSubtractorMOG()
代码:
BSGuy = cv2.createBackgroundSubtractorMOG2()
背景减法器在此过程中工作正常。正如您提到的,屏幕上没有多余的初始“图像”。