我设法使用 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,如何防止这种情况发生?
最佳答案
由于没有数据写入文件,代码失败。这会导致文件为空,因此无法打开。返回的数据为空的原因很可能是由于网络摄像头配置不正确。解决方案是将虚拟机连接到摄像头。如果仍然失败,请尝试在虚拟机上安装网络摄像头的驱动程序。
关于python-2.7 - python opencv2 中的 libpng 警告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47943714/