Python图像对比: opencv matplotlib.pyplot PIL.Image

本文注重对三种Python下常用的图像操作库。
分别从以下几个方面进行对比说明:

  • 图像读取
  • 图像显示
  • 色彩转换
  • 图像保存

目录

图像读取

open cv 读取方式

import cv2
color_image = cv2.imread('./logo.jpg', 1)
gray_image = cv2.imread('./logo.jpg', 0)
print('for color image:', color_image.dtype, color_image.size, color_image.shape)
print('for gray image:', gray_image.dtype, gray_image.size, gray_image.shape)
print('max is', np.max(color_image))
print('min is', np.min(color_image))

运行后输出信息:

for color image: uint8 2227200 (725, 1024, 3)
for gray image: uint8 742400 (725, 1024)
max is 255
min is 0

可知opencv读入图片以numpy矩阵的形式存放,默认为0-255.
在读取图像时,可以规定读入方式,1为读入彩色图像,0为读入灰度图像。
需要注意的是,opencv默认以BGR的顺序读入图像!

matplotlib.pyplot 读取方式

import matplotlib.pyplot as plt
color_image_plt = plt.imread('./logo.jpg')
print('for color image:',
  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 抱歉,我之前的回答有误。Matplotlib中没有`rgb2gray`函数。您可以使用Scikit-image中的`color.rgb2gray`函数将彩色图像转换为灰度图像。以下是一个示例代码: ```python import matplotlib.pyplot as plt from matplotlib.image import imread from skimage import color # 读取三张彩色图像 img1 = imread('color_image1.jpg') img2 = imread('color_image2.jpg') img3 = imread('color_image3.jpg') # 将彩色图像转换为灰度图像 gray_img1 = color.rgb2gray(img1) gray_img2 = color.rgb2gray(img2) gray_img3 = color.rgb2gray(img3) # 创建一个大小为1x3的子图布局,并在每个子图中显示一张灰度图像 fig, axs = plt.subplots(1, 3, figsize=(10, 5)) axs[0].imshow(gray_img1, cmap='gray') axs[0].set_title('Image 1', size=10) axs[0].axis('off') axs[1].imshow(gray_img2, cmap='gray') axs[1].set_title('Image 2', size=10) axs[1].axis('off') axs[2].imshow(gray_img3, cmap='gray') axs[2].set_title('Image 3', size=10) axs[2].axis('off') # 显示图像 plt.show() ``` 这个示例代码假设您已经将三张彩色图像保存在'color_image1.jpg','color_image2.jpg'和'color_image3.jpg'文件中,且这些文件位于您的Python代码文件的同一目录下。我们使用Scikit-image中的`color.rgb2gray`函数将彩色图像转换为灰度图像,并将转换后的灰度图像存储在`gray_img1`,`gray_img2`和`gray_img3`变量中。然后,我们使用`imshow`函数在每个子图中显示一张灰度图像,并使用`set_title`函数为每个子图添加标题。最后,使用`axis`函数关闭坐标轴的显示。 ### 回答2: AttributeError: module 'matplotlib.cm' has no attribute 'rgb2gray'是一个Python错误,表示matplotlib.cm模块中没有名为'rgb2gray'的属性。 在matplotlib中,cm模块用于颜色映射,但它并没有定义'rgb2gray'函数。'rgb2gray'函数通常用于将RGB图像转换为灰度图像,但在matplotlib中,并没有直接提供这样的函数。 如果你想将RGB图像转换为灰度图像,可以使用其他图像处理,比如PILPython Imaging Library)或者OpenCV。下面是一个使用PIL的例子: ```python from PIL import Image # 读取RGB图像 image_rgb = Image.open('image.jpg') # 将RGB图像转换为灰度图像 image_gray = image_rgb.convert('L') # 保存灰度图像 image_gray.save('image_gray.jpg') ``` 在上述代码中,我们使用PILImage模块,先读取RGB图像,然后使用convert方法将其转换为灰度图像,并保存为新的文件'image_gray.jpg'。 希望以上回答对您有帮助。 ### 回答3: 这个错误提示提示了在 `matplotlib.cm` 模块中不存在名为 `rgb2gray` 的属性。 `rgb2gray` 是一个用于将彩色图像转换为灰度图像的函数,但根据错误提示,它在 `matplotlib.cm` 模块中不存在。可能是因为你使用的是过时的版本的 matplotlib,其中没有包含此函数。 要解决这个问题,可以尝试更新 matplotlib 到最新版本,可以通过以下命令完成: ``` pip install --upgrade matplotlib ``` 如果已经安装了最新版本的 matplotlib,但仍然出现此错误,请检查你是否正确导入了需要使用 `rgb2gray` 函数的模块。你可能需要导入 `matplotlib.colors` 模块,然后使用 `matplotlib.colors.rgb2gray` 调用此函数。确保你的代码中的导入语句类似于以下代码: ```python from matplotlib import cm from matplotlib.colors import rgb2gray ``` 使用正确的导入语句和最新版本的 matplotlib 应该解决此问题。如果还有其他错误或疑问,请提供更多详细信息,以便我可以更好地帮助你。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值