如何在opencv(opencv-master)中使用python进行背景减法

0 投票
1 回答
5526 浏览
提问于 2025-04-17 21:40

我正在使用Enthought Canopy作为我的开发环境(IDE),这是一个用Python和opencv-masters的工具。我想做背景减除,但问题是,当我运行代码时,摄像头窗口(也就是启动摄像头的那个窗口)没有反应。

我的代码是:

import cv2
import numpy as np
cam=cv2.VideoCapture(0)
fgbg = cv2.BackgroundSubtractorMOG()
while(cam.isOpened): 
   f,img=cam.read()
if f==True:
     #img=cv2.flip(img,1)
     #img=cv2.medianBlur(img,3)
     fgmask = fgbg.apply(img)
     cv2.imshow('track',fgmask)
if(cv2.waitKey(27)!=-1):
   cam.release()
   cv2.destroyAllWindows()
   #break 

我不知道有没有其他方法可以实现这个背景减除。

谢谢!

1 个回答

2

如果 f==Trueif(cv2.waitKey(27)!=-1) 这两个条件放在 while 循环里面,那么程序就能正常运行了。

import cv2
import numpy as np
cam=cv2.VideoCapture(0)
fgbg = cv2.BackgroundSubtractorMOG()
while(cam.isOpened): 
   f,img=cam.read()
   if f==True:
       #img=cv2.flip(img,1)
       #img=cv2.medianBlur(img,3)
       fgmask = fgbg.apply(img)
       cv2.imshow('track',fgmask)
   if(cv2.waitKey(27)!=-1):
       cam.release()
       cv2.destroyAllWindows()
       #break 

撰写回答