当使用此代码在内存中打开 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 之外的另一个级别的流打印的。
有人可以帮助我吗?
我是在战后到达的,但如果它可以提供帮助,我所做的是以下内容,然后您可以获得造成麻烦的图片列表。
images = glob.glob("images/*.webp") for img in images: imgr = cv2.imread(img) if imgr is None : print(img)