python-2.7 - python opencv2 中的 libpng 警告

标签 python-2.7 opencv opencv3.0 libpng

我设法使用 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/

相关文章:

python - 合并 2 个列表并删除重复项

python - 为什么导入并不总是导入嵌套包?

scala - opencv 3.0.0 java imread_0 未定义

python - OpenCV Python 中的距离变换自动将 CV_8UC3 转换为 CV_32SC1,从而产生断言错误

python - 是否可以将其包装在 Python "with"语句中?

python - 替代 requests.post 功能?

python - 为什么 tensorflow 模型总是预测同一类?

python - 通过管道将 OpenCV 和 PyAudio 从 python 传输到 ffmpeg 流 youtube rtmp

c++ - Valgrind 大小为 4 的无效读取 (OpenCV)

python-2.7 - DrawKeypoints 函数不适用于 OpenCV3.0/Python 2.7