2016-04-18 35 views
1

私はこのコードを使用しました。opencvとpythonを使ってビデオからフレームを抽出する

import cv2 

vc = cv2.VideoCapture('test2.mp4') 
c=1 

if vc.isOpened(): 
    rval , frame = vc.read() 

else: 
    rval=False 
    print("hello") 

while rval: 
    rval, frame = vc.read() 
    cv2.imwrite(str(c) + '.jpg',frame) 
    c = c + 1 
    cv2.waitKey(1) 

vc.release() 

これはvc.isOpened()が呼び出されなかったことを意味する画面上でhelloを表示します。 問題と思われることは分かりませんが、エラーはありません。

+0

おそらく必要なドライバがありません – Miki

+0

どのような種類のドライバがありますか? –

答えて

0

コードに問題はありません。 vcオブジェクトが正しく割り当てられていません。そのため、vc.isOpened()Falseになります。 Pythonインタプリタでコード全体を試してみたら、vcの値をチェックすることができます。 vc.isOpened()これはFalseの値を保持しているため、elseの条件になり、helloという文字が表示されます。また、初期化に失敗したために、rvalも読み取ることができず、Falseという値が得られます。したがって、whileループは実行されませんでした。

ここで私はウェブカメラの読み物の小さなデモを表示し、それは値です。

In [1]: import cv2 
In [2]: a = cv2.VideoCapture(0) 
In [3]: a.isOpened() 
Out[3]: True 
In [6]: ret,frame = a.read() 
In [7]: ret 
Out[7]: True 

したがって、ビデオの初期化またはビデオキャプチャオブジェクトの場所を確認する必要があります。 vc = cv2.VideoCapture('test2.mp4')

+0

VideoCaptureの '0'引数は何ですか? – sumit

+1

@sumit通常、 '0'はあなたのマシンのウェブカメラに属します。複数接続している場合はさらに進んでいきます。 –

関連する問題