Python 什么是;未来警告:rgb2gray的行为将在scikit图像0.19“中改变;实际上是什么意思?

Python 什么是;未来警告:rgb2gray的行为将在scikit图像0.19“中改变;实际上是什么意思?,python,scikit-image,Python,Scikit Image,我正在运行一个代码,并收到以下消息: 未来警告:rgb2gray的行为将在scikit图像0.19中更改。目前,rgb2gray允许2D灰度图像作为输入传递,而不作为输出修改。从版本0.19开始,2D阵列将被视为具有3个通道的1D图像 我不理解最后一句话:“2D阵列将被视为具有3个通道的1D图像”。你能举个例子吗?而且,这不会影响我在这个阵列上所做的数学运算吗?我想,调用一些1D图像应该会显示发生了什么(将来输入2D图像时): 来自uint8的numpy import arange 从skima

我正在运行一个代码,并收到以下消息:

未来警告:rgb2gray的行为将在scikit图像0.19中更改。目前,rgb2gray允许2D灰度图像作为输入传递,而不作为输出修改。从版本0.19开始,2D阵列将被视为具有3个通道的1D图像

我不理解最后一句话:“2D阵列将被视为具有3个通道的1D图像”。你能举个例子吗?而且,这不会影响我在这个阵列上所做的数学运算吗?

我想,调用一些1D图像应该会显示发生了什么(将来输入2D图像时):

来自uint8的numpy import arange
从skimage.color导入rgb2gray
#二维输入
格雷=(252+arange(2**2))[:-1].aType(uint8).重塑((2,2))
打印(灰色)
# [[255 254]
#  [253 252]]
打印(RGB2灰色(灰色))
# [[255 254]
#  [253 252]]
#一维输入
灰色=灰色。展平()
打印(灰色)
# [255 254 253 252]
打印(RGB2灰色(灰色))
# 0.9966290196078431
打印((0.2125*灰色[0]+0.7154*灰色[1]+0.0721*灰色[2])/255)
# 0.9966290196078431
基本上,(展平)输入的前三个值将假定为单个RGB元组,并因此用于计算该(假定)RGB元组的亮度

而第一个
rgb2gray
调用给出了已经声明的警告

未来警告:rgb2gray的行为将在scikit图像0.19中更改。目前,rgb2gray允许2D灰度图像作为输入传递,而不作为输出修改。从版本0.19开始,2D阵列将被视为具有3个通道的1D图像

第二个
rgb2gray
调用产生另一个警告:

FutureWarning:现在不推荐使用非RGB图像转换。对于RGBA图像,请改用rgb2gray(rgba2rgb(rgb))。在版本0.19中,如果输入图像最后尺寸长度不是3,则会引发ValueError

因此,我们有兴趣了解2D图像的处理是如何准确实现的,以防止出现第二个警告中提到的
ValueError

在应用
rgb2gray
中提到的更改后,在
skimage
GitHub问题跟踪器上有几个关于向后兼容性的讨论。是的,当您在输入一些灰度图像时依赖于
rgb2gray
的“旧”输出时,您会遇到差异

----------------------------------------
系统信息
----------------------------------------
平台:Windows-10-10.0.16299-SP0
Python:3.9.1
PyCharm:2021.1.1
NumPy:1.20.2
scikit图像:0.18.1
----------------------------------------