简体   繁体   English

使用python 2.7读取视频文件的OpenCV错误

[英]OpenCV error for reading a video file with python 2.7

When I use cap=cv2.VideoCapture('L1.mp4') to read a video, it gives the below error. 当我使用cap=cv2.VideoCapture('L1.mp4')读取视频时,出现以下错误。 This error is only thrown for some videos. 某些视频会引发此错误。 Any suggestions please? 有什么建议吗?

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

OpenCV Error: Assertion failed (dims <= 2 && step[0] > 0) in cv::Mat::locateROI, file C:\\build\\master_winpack-bindings-win64-vc14-static\\opencv\\modules\\core\\src\\matrix.cpp, line 949 1 Traceback (most recent call last): File "E:\\py_work\\lipclips\\PlotBox\\may17.py", line 109, in 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: error: (-215) dims <= 2 && step[0] > 0 in function cv::Mat::locateROI OpenCV错误:cv :: Mat :: locateROI,文件C:\\ build \\ master_winpack-bindings-win64-vc14-static \\ opencv \\ modules \\ core \\ src中的断言失败(dims <= 2 && step [0]> 0) \\ matrix.cpp,第949行1追溯(最近一次调用为最新):文件“ E:\\ py_work \\ lipclips \\ PlotBox \\ may17.py”,第109行,位于fgmask = cv2.morphologyEx(fgmask,cv2.MORPH_CLOSE,内核) cv2.error:C:\\ build \\ master_winpack-bindings-win64-vc14-static \\ opencv \\ modules \\ core \\ src \\ matrix.cpp:949:error:(-215)dims <= 2 && step [0]> 0在函数cv :: Mat :: locateROI中

warning: Error opening file (/build/opencv/modules/videoio/src/cap_ffmpeg_impl.hpp:779) warning: L1.mp4 (/build/opencv/modules/videoio/src/cap_ffmpeg_impl.hpp:780) 警告:错误打开文件(/build/opencv/modules/videoio/src/cap_ffmpeg_impl.hpp:779)警告:L1.mp4(/build/opencv/modules/videoio/src/cap_ffmpeg_impl.hpp:780)

You can't just extract fgmask from a BackgroundSubtractor with only one image. 您不能仅从一张图像中从BackgroundSubtractor提取fgmask In this case, your fgmask is empty and you can't apply morphologyEx . 在这种情况下,您的fgmask为空,因此您无法应用morphologyEx Try: 尝试:

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)

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM