无法在python3中使用cv2捕获libpng的读取错误

问题描述 投票:0回答:1

当使用此代码在内存中打开 png 时,libpng 给我这个警告/错误:

cv2.imread("477px-PNG_Test-Wrong-Width.0_Fixed.png")
libpng error: bad adaptive filter value

这正是我想要的,因为我需要检索有关损坏的 png 的信息才能修复它们。

但是 iv 发现自己无法将此警告/错误放入 var 中,因为 iv 理解 libpng 使用 stderr 来打印这些警告。

所以我尝试了很多解决方案将 stderr/stdout 重定向到像这样的变量,对于 python >= 3.5:

import io , cv2
from contextlib import redirect_stderr

with io.StringIO() as buf, redirect_stderr(buf):
    cv2.imread("477px-PNG_Test-Wrong-Width.0_Fixed.png")
    output = buf.getvalue()

但它不起作用..似乎这条消息是从 python 之外的另一个级别的流打印的。

有人可以帮助我吗?

python opencv exception stderr libpng
1个回答
0
投票

我是在战后到达的,但如果它可以提供帮助,我所做的是以下内容,然后您可以获得造成麻烦的图片列表。

images = glob.glob("images/*.webp")
for img in images:

    imgr = cv2.imread(img)
    if imgr is None :
        print(img)
© www.soinside.com 2019 - 2024. All rights reserved.