如何在 Python 中使用 scikit-learn 将图像从 RGB 转换为灰度?
Scikit-learn,通常称为 sklearn,是 Python 中一个用于实现机器学习算法的库。
将图像从一个色彩空间转换为另一个色彩空间通常用于使新获得的色彩空间能够作为更好的输入来对其执行其他操作。这包括分离色调、亮度、饱和度级别等等。当图像使用 RGB 表示法表示时,色调和亮度属性显示为通道 R、G 和 B 的线性组合。
当尝试将具有 RGB 色彩空间的图像转换为灰度时,像素值计算为红色、绿色和蓝色像素的加权和。公式如下所示:
Y = 0.2125 R + 0.7154 G + 0.0721 B
这些权重是专门提供的,因为它们被 CRT 荧光粉使用,与为所有三个值提供相等权重相比,CRT 荧光粉更好地代表了人类对红色、绿色和蓝色的感知。
让我们看看如何将 RGB 图像转换为灰度图像:
示例
from skimage import io import matplotlib.pyplot as plt from skimage import data from skimage.color import rgb2gray from skimage import data path = "path to puppy_1.JPG" orig_img = io.imread(path) grayscale_img = rgb2gray(orig_img) fig, axes = plt.subplots(1, 2, figsize=(8, 4)) ax = axes.ravel() ax[0].imshow(orig_img) ax[0].set_title("Original image") ax[1].imshow(grayscale_img, cmap=plt.cm.gray) ax[1].set_title("Grayscale image") fig.tight_layout() plt.show()
输出
解释
- 导入所需的库。
- 定义存储图像的路径。
- 使用 ‘imread’ 函数访问路径并读取图像。
- 使用 ‘imshow’ 函数在控制台上显示图像。
- 使用 ‘rgb2gray’ 函数将图像从 RGB 色彩空间转换为灰度色彩空间。
- 使用 matplotlib 库绘制此数据,并显示原始图像和转换为灰度后的图像。
- 这将显示在控制台上。
广告