2017-12-15 21 views
0

私はpython2なぜOpenCVはビデオ処理の途中でこのエラーを取り消しますか?エラー:(-215)scn == 3 ||機能品種でSCN == 4 :: cvtColor

import cv2 
(....) 

videofile = 'a.mkv' 
cap = cv2.VideoCapture(videofile) 
(....) 
t_frames, fps, t_time, w, h = getVideoInfo(cap) 
(....) 
cap.set(cv2.CAP_PROP_POS_FRAMES ,first_frame) 
(....) 
frame = 0 
while (not stopped==1): 
    ret, frame = cap.read(frame) 
    (...some functions related with cv2 are here called...) 
    frame = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY) 
    (...) 

でビデオキャプチャ(mkvのファイル)を処理するためのOpenCVを使用しています。しかしほぼ一部errosを処理し、ビデオの最後には、表示されます。 エラー:(-215)scn == 3 || scv == 4 in function cv :: cvtColor

そして、エラーはcv2.cvtColor(frame、cv2.COLOR_BGR2GRAY)で発生します。 アイデアはありますか?悪いフレーム?しかし、私はcv2に関連するいくつかの関数の前に呼びました。それは大丈夫でした。

+1

'ret、frame = cap.read(frame)' - 'read'が' read'が成功したかどうかをテストします。それが失敗すると(フレームがもう読み込まれなくなったら)、 'frame'(この場合は' None'の値を保持します)を実際のイメージを期待する他の関数に渡さないでください。 –

答えて

1

リソースをロードした後、リソースが正しくロードされたかどうかを確認します。

ret, frame = cap.read(frame) 
(....) 
if frame is not None 
    frame = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY) 
+0

問題はイメージの形に関連していました... – JLamas

+0

私はすでにフレームをチェックしていました。 – JLamas

関連する問題