python opencv2 中的 libpng 警告

libpng warning in python opencv2

我使用 python 2.7 在 linux(Debian) 虚拟机上安装并成功导入了 cv2。我尝试使用我的网络摄像头和以下代码拍照:

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

我早些时候在我的 windows 10 主机上测试了代码,它工作正常。使用此代码时程序成功保存文件,但无法打开文件并在终端中显示以下错误:

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,我如何防止这种情况发生?

由于没有数据写入文件,代码失败。这会导致文件为空,因此无法打开。返回数据为空的原因很可能是由于网络摄像头配置不正确。解决方法是将 VM 连接到相机。如果仍然失败,请尝试在虚拟机上为网络摄像头安装驱动程序。