加载视频时opencv python出错

时间:2017-09-10 16:11:33

标签: python opencv numpy opencv3.0 cv2

实际上我正在使用k=cv2.VideoCapture("it.mp4")加载视频,该视频位于同一文件夹中,但当我检查它是否打开时,它显示“False”。当我使用k.open()打开它时,它会显示我的错误:

  

追踪(最近的呼叫最后):
  文件“”,第1行,在中   TypeError:未找到必需参数'filename'(pos 1)

我认为它不是获取文件但视频位于同一文件夹中。很久以来我一直坚持这个。

以下是代码: -

import numpy as np
import cv2
cap=cv2.VideoCapture("it.mp4")
k=cap.isOpened()
if k==False:
    cap.open()

它显示以下错误: -

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: Required argument 'filename' (pos 1) not found

2 个答案:

答案 0 :(得分:1)

通过查看代码,很容易弄清楚为什么会出现此错误。原因是您使用的cap.open()没有任何参数。您需要将文件名传递给cap.open()才能初始化cv2.VideoCapture。所以你的代码应该是

import numpy as np
import cv2
cap=cv2.VideoCapture("it.mp4")
k=cap.isOpened()
if k==False:
   cap.open("it.mp4")

为了从cap读取帧,您可以使用这样的循环

while(True):
     ret, frame = cap.read()
     cv2.imshow('frame',frame)
     if cv2.waitKey(1) & 0xFF == ord('q'):
        break

答案 1 :(得分:0)

您需要传递cap.open()的参数。在你的情况下 -

cap.open("it.mp4")

如果您正在使用相机或要阅读的文件名,则必须是设备ID。查看页面 here.

但我认为这里的实际问题是你的opencv无法读取你传递的视频以及你试图解决的问题。文件名或扩展名是错误的。

如果不是,只需转到路径C:\ opencv \ build \ x86 \ vc12 \ bin,复制opencv_ffmpeg abcd .dll并将其粘贴到python根目录中。这里的abcd是你的opencv版本。如果是64位设置,请复制相应的设置。