import numpy as np
import cv2
cap = cv2.VideoCapture('vtest.avi')
fgbg = cv2.bgsegm.createBackgroundSubtractorMOG()
while(1):
ret, frame = cap.read()
fgmask = fgbg.apply(frame)
cv2.imshow('frame',fgmask)
k = cv2.waitKey(30) & 0xff
if k == 27:
break
cap.release()
cv2.destroyAllWindows()
出现以下错误:属性错误:模块'cv2.cv2'没有属性'bgsegm'。
我正在Windows机器上使用Python 3.6和OpenCV 3.6。我尝试使用pip install opencv-contrib-python命令,但问题仍然存在于我的Windows机器上。这个命令在Ubuntu系统上有帮助,但在Windows上没有。我在堆栈上搜索了类似的问题,但无法解决这个问题。有人能帮我解决这个问题吗?谢谢!
6条答案
按热度按时间hfyxw5xn1#
您需要安装
contrib
依赖项才能使其正常工作,因为它不是标准构建的一部分。qeeaahzv2#
安装contrib依赖项将解决您的问题:
或者,您可以使用cv2中直接提供的较新的
createBackgroundSubtractorMOG2()
:2jcobegt3#
如果您使用的是python3,请写入:
而不是:
5ktev3wc4#
当有人试图安装多个OpenCV软件包,甚至试图以不同的顺序安装多个OpenCV软件包时,很可能会出现此问题。
如果你阅读官方的
opencv-contrib-python
installation docs,你只需要安装一个OpenCV包。例如,如果您需要一个带有额外contrib模块的基本OpenCV模块,则只需安装所需版本的
opencv-contrib-python
:这将安装OpenCV和OpenCV contrib模块。
原因是所有OpenCV模块都使用相同的名称空间
cv2
,并且不使用插件架构。因此,当您安装其他模块时,它将使用正在安装的新模块库重写现有名称空间。lztngnrs5#
我用的是3.4.2.16版本的OpenCV,你可以试试这个版本的OpenCV
nqwrtyyt6#
写入
代替
您不需要使用bgsegm。