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인지와 어떻게 이런 일이 발생하지 않도록 할 수 있습니까?
이미지를 파일에 쓰기 전에 확인하십시오. 그리고 코드는 추악하게 정리되어 있습니다. – Silencer
대략적으로 오류를 보여주기 위해 작성된 것으로, 파일에 쓰려고 시도한 이미지 변수는 없음입니다. – eclipse
어디서나 retval을 확인하지는 않습니다 ... 정말로 이미지를 얻고 있습니까? 오류는 기본적으로 빈 이미지를 저장하고 있음을 알려줍니다. 카메라에서 이미지를 읽을 수 없으면 반환되지 않습니다. 카메라가 연결되어 있는지 확인하고 retval이 실제로 true인지 확인해야합니다. – api55