2017-12-15 3 views
0

내가 python2와 비디오 캡처 (.mkv 파일)을 처리하기 위해 OpenCV의를 사용하고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) 
    (...) 
는 는

그러나 일부하는 오류를 처리하는 비디오의 거의 끝 부분이 나타납니다 : 오류 : (-215) scn == 3 || scn == 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

관련 문제