我生成单色图像,并使用imageio.imwrite
保存它们。每次保存文件时,都会收到以下警告:
WARNING:root:Lossy conversion from float64 to uint8. Range [-0.24890179009891278, 2.35786261304524]. Convert image to uint8 prior to saving to suppress this warning.
我不在乎这种“有损转换”。一切看起来都很好,并且工作正常。
但是,每生成约100张图像,我都会得到不同的警告,我想抓住它们。因此,我想忽略以上内容。
我试图忽略它,但是即使我打电话
import warnings
warnings.simplefilter('ignore')
之前我仍然收到此警告。
答案 0 :(得分:4)
该库不使用warnings
模块。相反,它通过调用顶级logging
framework使用logging.warning()
function记录一条消息。参见imageio.core.util._precision_warn()
function:
from logging import warning as warn
# ...
def _precision_warn(p1, p2, extra=""):
t = (
"Lossy conversion from {} to {}. {} Convert image to {} prior to "
"saving to suppress this warning."
)
warn(t.format(p1, p2, extra, p2))
这很...不幸,因为您无法使用logging
API轻松禁用此功能。最佳做法是为库使用专用的命名记录器。
因此,最好对库进行 patch 否使上述函数成为no-op:
import imageio.core.util
def silence_imageio_warning(*args, **kwargs):
pass
imageio.core.util._precision_warn = silence_imageio_warning
您还可以使所有日志记录保持沉默,从而调整根记录器的配置。这不是理想的选择,因为您可能想使用自己记录日志或使用性能更好的第三方库。
我已经filed an issue with the project要他们解决他们的伐木故事。
答案 1 :(得分:0)
尝试
warnings.filterwarnings("ignore")
答案 2 :(得分:0)
对此有一个简单的解决方法/解决方案。该库使用的是 logging
模块而不是 warning
模块。可以在代码中包含这些行以抑制任何此类根警告,除非它的严重性级别为 ERROR。
import logging
logging.getLogger().setLevel(logging.ERROR)
如果不是根警告,可以使用以下代码段代替。
import warnings
warnings.filterwarnings("ignore")