【问题标题】:libpng warning in python opencv2python opencv2中的libpng警告
【发布时间】:2018-06-05 05:42:29
【问题描述】:

我设法使用 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,我怎样才能防止这种情况发生?

【问题讨论】:

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

标签: python-2.7 opencv opencv3.0 libpng


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2013-03-31
    • 2019-04-04
    • 2014-08-11
    • 2020-11-08
    • 1970-01-01
    • 1970-01-01
    • 2017-05-26
    • 2018-11-28
    • 2016-10-19
    相关资源
    最近更新 更多