【问题标题】:Convert numpy array of colour images to a numpy array of gray scale images将彩色图像的 numpy 数组转换为灰度图像的 numpy 数组
【发布时间】:2018-10-13 04:50:44
【问题描述】:

如何使用下面的to_grayscale(来自此site)函数将包含两个彩色图像的数组转换为包含两个灰度图像的数组

重要提示:我不想要图像文件,我想要下面定义的数组image_g

首先创建函数和示例图像:

import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline
plt.rcParams['image.cmap'] = 'gray'
np.random.seed(0)

def to_grayscale(im):
    tile = np.tile(np.c_[0.333, 0.333, 0.333], reps=(im.shape[0],im.shape[1],1))
    return np.sum(tile * im, axis=2)

images = np.random.randint(0, 255, 24).reshape(2, 2, 2, 3)
images.shape

out> (2, 2, 2, 3)

看看第一张图片:

plt.imshow(images[1])

灰度查看:

plt.imshow(to_grayscale(images[1]))

如何将images 转换为灰度图像数组image_g?我想做这样的事情:

image_g = np.somefunction(to_grayscale, images)
images_g.shape

out> (2, 2, 2)

somefunction 是答案的占位符。

【问题讨论】:

    标签: python numpy


    【解决方案1】:

    使用PIL

    from PIL import Image
    img = Image.open('image.png').convert('LA')
    img.save('greyscale.png')
    

    【讨论】:

    • 这没有回答问题,因为它不会产生数组image_g
    【解决方案2】:

    根据answer,我不确定这是否是一般最快或最优雅的方式来做到这一点

    images_g = np.array([to_grayscale(images[i]) for i in range(images.shape[0])])
    

    【讨论】:

      猜你喜欢
      • 2014-06-02
      • 2021-04-02
      • 2021-05-01
      • 2020-12-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-28
      • 1970-01-01
      相关资源
      最近更新 更多