Python 2.7 python opencv2中的libpng警告

Python 2.7 python opencv2中的libpng警告,python-2.7,opencv,opencv3.0,libpng,Python 2.7,Opencv,Opencv3.0,Libpng,我使用Python2.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_i

我使用Python2.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
我之前已经在我的Windows10主机上测试了代码,它运行良好。使用此代码时,程序成功保存文件,但无法打开文件,并且终端中显示以下错误:

libpng warning: Image width is zero in IHDR
libpng warning: Image height is zero in IHDR
libpng error: Invalid IHDR data
错误发生在相机捕捉对象为非类型时,为什么会出现这种情况? 如何防止发生此错误并通过网络摄像头成功拍摄快照


编辑:当运行行“cv2.imwrite(tar\u文件,摄像机捕获)”时,出现错误。进一步检查后,camera_capture变量为非类型,retval值为False,这将解释宽度和高度为0。为什么变量是非类型的?如何防止这种情况发生?

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

在将图像写入文件之前检查图像。您的代码组织得很糟糕。它的粗略编写只是为了演示错误,我试图写入文件的图像变量为None。您没有在任何地方检查retval。。。你确定它实际上是在获取图像吗?该错误基本上告诉您正在保存一个空图像。如果无法从相机读取图像,则返回NoneType。。。。您必须确保摄像头已连接,并检查retval是否真实。我假设发生错误的原因是网络摄像头配置不正确。