【问题标题】:OpenCV error for reading a video file with python 2.7使用 python 2.7 读取视频文件的 OpenCV 错误
【发布时间】:2018-03-09 15:49:31
【问题描述】:

当我使用cap=cv2.VideoCapture('L1.mp4') 阅读视频时,会出现以下错误。仅一些视频会引发此错误。请问有什么建议吗?

cap=cv2.VideoCapture('L1.mp4')
_,img=cap.read()
fgbg = cv2.createBackgroundSubtractorMOG2()
fgmask = fgbg.apply(img)
fgmask = cv2.morphologyEx(fgmask, cv2.MORPH_CLOSE, kernel)

OpenCV 错误:断言失败 (dims 0) in cv::Mat::locateROI,文件 C:\build\master_winpack-bindings-win64-vc14-static\opencv\modules\core\src\matrix.cpp, 第 949 行 1 Traceback(最近一次调用最后一次):文件 “E:\py_work\lipclips\PlotBox\may17.py”,第 109 行,在 fgmask = cv2.morphologyEx(fgmask, cv2.MORPH_CLOSE, kernel) cv2.error: C:\build\master_winpack-bindings-win64-vc14-static\opencv\modules\core\src\matrix.cpp:949: 错误:(-215) dims 0 in function cv::Mat::locateROI

警告:打开文件时出错 (/build/opencv/modules/videoio/src/cap_ffmpeg_impl.hpp:779)警告: L1.mp4 (/build/opencv/modules/videoio/src/cap_ffmpeg_impl.hpp:780)

【问题讨论】:

标签: python c++ opencv video video-processing


【解决方案1】:

您不能只用一张图片从BackgroundSubtractor 中提取fgmask。在这种情况下,您的fgmask 为空,您无法申请morphologyEx。试试:

cap = cv2.VideoCapture('L1.mp4')
fgbg = cv2.createBackgroundSubtractorMOG2()

while True:
    ret, img = cap.read()
    if not ret:
        break

    fgmask = fgbg.apply(img)

    # check if fgmask is valid
    if fgmask is None:
        continue

    fgmask = cv2.morphologyEx(fgmask, cv2.MORPH_CLOSE, kernel)

【讨论】:

  • 我正在使用类似内核; kernel = cv2.getStructuringElement(cv2.MORPH_ELLIPSE,(4,4)) 当它更改为 kernel = cv2.getStructuringElement(cv2.MORPH_ELLIPSE,(1,1)) 时,该错误消失了。
猜你喜欢
  • 1970-01-01
  • 2017-05-17
  • 2018-04-23
  • 2014-04-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-01-31
  • 2020-10-28
相关资源
最近更新 更多