2016-08-10 8 views
2

나는 열 화상 카메라에서 나오는 데이터를 내보내려고하지만 난라는 오류 메시지가파이썬 OpenCV의 cv2.VideoWriter 오류

error: /build/opencv-ISmtkH/opencv-2.4.9.1+dfsg/modules/highgui/src/cap_ffmpeg.cpp:238: error: (-215) image->depth == 8 in function writeFrame 

사람이 내가 뭘하는지보고 나에게 무엇을 말할 수 내가 잘못하고있어? 나는이 오류가 무엇을 의미하는지, 왜 그런지 이해하지 못한다.

o = camera.add_overlay(np.getbuffer(a), size=(320,240), layer=3, alpha=int(alpha), crop=(0,0,80,60), vflip=flip_v) 

filename = time.strftime("%Y.%m.%d %H.%M.%S", time.localtime()) + ".avi" 
fourcc = cv2.cv.CV_FOURCC('I','4','2','0') 
out = cv2.VideoWriter(filename, fourcc, fps, (width, height)) 

try: 
    time.sleep(0.2) # give the overlay buffers a chance to initialize 
    with Lepton(device) as l: 
    last_nr = 0 
    while True: 
     _,nr = l.capture(lepton_buf) 

     out.write(lepton_buf) 

     if nr == last_nr: 
     # no need to redo this frame 
     continue 
     last_nr = nr 
     cv2.normalize(lepton_buf, lepton_buf, 0, 65535, cv2.NORM_MINMAX) 
     np.right_shift(lepton_buf, 8, lepton_buf) 
     a[:lepton_buf.shape[0], :lepton_buf.shape[1], :] = lepton_buf 
     o.update(np.getbuffer(a)) 
except Exception: 
    traceback.print_exc() 
finally: 
    camera.remove_overlay(o) 

답변

3

당신은 당신이 쓰기하려는 것은 숫자가 아니다 out.write(lepton_buf)

out.write(np.uint8(lepton_buf))에 변경해야하고 그것을 혼란거야.

+0

오류는 없지만 출력되는 파일은 항상 손상되었습니다. 왜 그런가? –

+0

부패한다는 것은 무엇을 의미합니까? – jlarsch

+0

또한 버퍼가 비어 있지 않도록'out.release()'문이 누락되었습니다. –

0

몇 가지 제안

는 일반적인 코덱을 시도하려고합니다 :

fourcc=cv2.VideoWriter_fourcc('X', 'V', 'I', 'D') 

이 비디오 크기가 이미지 크기에 맞게해야합니다. 너비와 높이를 바꿔보십시오.이 순서는 혼란 스러울 수 있습니다.

height,width,channels=lepton_buf.shape 

또는 비디오에 대한 직접 폭과 높이를 지정합니다 @Crystal으로 앞서 언급

out = cv2.VideoWriter(filename, fourcc, 8.0, (60, 80)) 

로, 당신은 데이터 형식 'UINT8'

절약 시도에 이미지 데이터를 변환해야합니다 '신선한'파일 이름. 때때로 opencv 비디오 라이너는 이전 액세스에서 제대로 릴리스되지 않은 파일에 자동으로 저장하지 못합니다.

마지막으로 프레임 작성이 완료되면 파일을 릴리스하십시오!

out.release() 
+0

감사합니다. 첫 번째 제안을 시도했는데 모듈 오류가 발생하여 지금 가지고있는 코덱을 고수 할 것입니다. 또한 비디오의 높이와 너비를 확인하는 방법이 있는지 알고 있습니까? datahsheet는 해상도가 80x60 인 것을 알려주지 만 카메라를 실행하는 다른 누군가의 코드를 사용하고 있기 때문에 제 전화 번호가 정확한지 확인하고 싶었습니다. –

+0

어떤 시스템을 사용하고 있습니까? 나는 당신의 opencv/ffmpeg에서 xvid를 사용할 수 없다는 것에 놀랐다. 컴퓨터에 opencv를 통해 비디오를 성공적으로 저장 한 적이 있습니까? – jlarsch

+0

당신의 코드는'out = cv2.VideoWriter (filename, fourcc, fps, (width, height))'를 지정합니다. 너비와 높이를 어디에 지정합니까? – jlarsch