【问题标题】:cv2.createBackgroundSubtractorMOG2() errorcv2.createBackgroundSubtractorMOG2() 错误
【发布时间】:2016-04-18 05:52:23
【问题描述】:

有人可以帮我解决这个问题吗? 我正在尝试使用背景减法方法,并且在以前的 opencv 版本中使用 cv2.BackgroundSubtractorMOG() 方法时可以完美运行。

import cv2
backsub = cv2.createBackgroundSubtractorMOG2()
capture = cv2.VideoCapture("headcount.avi")
i = 0
if capture:
  while True:

    ret, frame = capture.read()
    if ret:
        fgmask = backsub.apply(frame, None, 0.01)
        erode=cv2.erode(fgmask,Nonei,terations=3)
        moments=cv2.moments(erode,True)        

但是使用 opencv 3.1.0 我在使用 cv2.createBackgroundSubtractorMOG2() 函数时遇到了问题,这是我在应用掩码操作时遇到的错误

错误: fgmask = backsub.apply(frame, 1, 0.01) 错误:C:\builds\master_PackSlaveAddon-win32-vc12-static\opencv\modules\python\src2\cv2.cpp:163:错误:(-215)数据通常应该为NULL!在函数 NumpyAllocator::allocate

【问题讨论】:

  • 试试 1) fgmask = backsub.apply(frame), or fgmask = backsub.apply(frame, learningRate=0.01) or backsub.apply(frame, fgmask, 0.01)
  • 什么都没有。

标签: python opencv image-processing background-subtraction


【解决方案1】:

这是 OpenCV 3.1 的错误。 您可以禁用 OpenCL 支持作为解决方法。 详情在这里 https://github.com/Itseez/opencv/issues/6055

【讨论】:

    【解决方案2】:

    只需将此添加到您的代码中。

    cv2.ocl.setUseOpenCL(False)
    

    更多信息在这里: https://github.com/opencv/opencv/issues/6055

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-02-22
      • 1970-01-01
      • 1970-01-01
      • 2021-02-23
      • 2020-12-13
      • 2019-01-20
      • 2016-11-28
      • 1970-01-01
      相关资源
      最近更新 更多