2017-12-22 264 views
-2

python 2.7을 사용하여 Linux (Debian) 가상 시스템에서 cv2를 설치하고 성공적으로 가져올 수있었습니다. 나는 다음과 같은 코드 조각으로 웹캠을 사용하여 사진을 찍어 보았습니다 : 내 창에 코드 이전 10 호스트 시스템을 테스트하고 잘 작동python opencv2에서 libpng 경고

import cv2 
from datetime import datetime 
tar_file = datetime.now().strftime("%Y%m%d-%H%M%S") + '.png' 
camera_port = 0 
ramp_frames = 30 
camera = cv2.VideoCapture(camera_port) 
def get_image(): 
    retval, im = camera.read() 
    return im 
for i in xrange(ramp_frames): 
    temp = get_image() 
camera_capture = get_image() 
cv2.imwrite(tar_file, camera_capture) 
camera = None 

. 프로그램이 성공적으로 파일을 저장이 코드를 사용하지만, 파일을 열 수 없습니다 다음과 같은 오류가 터미널에 표시되는 경우 :

libpng warning: Image width is zero in IHDR 
libpng warning: Image height is zero in IHDR 
libpng error: Invalid IHDR data 

오류가 camera_capture 객체가 NoneType이기 때문에, 왜 그렇게이며 발생? 이 오류가 발생하지 않도록 방지하고 웹캠을 통해 스냅 샷을 성공적으로 가져올 수 있습니까?

편집 : "cv2.imwrite (tar_file, camera_capture)"행을 실행하면 오류가 발생합니다. 추가 검사시 camera_capture 변수는 NoneType이고 retval 값은 False이며 너비와 높이가 0임을 설명합니다. 왜 변수가 NoneType인지와 어떻게 이런 일이 발생하지 않도록 할 수 있습니까?

+0

이미지를 파일에 쓰기 전에 확인하십시오. 그리고 코드는 추악하게 정리되어 있습니다. – Silencer

+0

대략적으로 오류를 보여주기 위해 작성된 것으로, 파일에 쓰려고 시도한 이미지 변수는 없음입니다. – eclipse

+0

어디서나 retval을 확인하지는 않습니다 ... 정말로 이미지를 얻고 있습니까? 오류는 기본적으로 빈 이미지를 저장하고 있음을 알려줍니다. 카메라에서 이미지를 읽을 수 없으면 반환되지 않습니다. 카메라가 연결되어 있는지 확인하고 retval이 실제로 true인지 확인해야합니다. – api55

답변

0

파일에 데이터를 쓰지 않아 코드가 작동하지 않습니다. 이로 인해 파일이 비어있어 열 수 없습니다. 반환 된 데이터가 비어있는 이유는 잘못 구성된 웹캠 때문일 가능성이 큽니다. 이에 대한 해결책은 VM을 카메라에 연결하는 것입니다. 그래도 실패하면 웹캠 용 VM에 드라이버를 설치하십시오.