python - 将彩色图像的 numpy 数组转换为灰度图像的 numpy 数组
问题描述
如何使用下面的(来自此站点)函数 将两个彩色图像的数组转换为两个灰度图像的数组。to_grayscale
重要提示:我不想要图像文件,我想要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)
wheresomefunction
是答案的占位符。
解决方案
根据这个答案,我不确定这是否是最快或最优雅的方式
images_g = np.array([to_grayscale(images[i]) for i in range(images.shape[0])])
推荐阅读
- php - 有没有办法在 Laravel 中从 LoginController 对用户进行身份验证之前引用用户模型
- sql - Oracle/SQL:Regexp 与 LIKE-% 类似,但必须使用通配符(非可选)
- java - 无法为变量设置值
- google-cloud-dataflow - 使用 BeamSQL 取消嵌套嵌套的 PCollection
- node.js - 如何获取 webpack 包中使用的所有包的列表?
- java - 必须实现抽象方法
- aframe - 在 A-Frame 场景中渲染 2D 形状的最简单方法是什么?
- c++ - 你可以直接在函数调用中使用 make_unique 吗?
- amazon-ec2 - 在实例已经初始化后启动进程时,有没有办法在我的 ec2 实例上公开端口?
- unicode - -Dfile.encoding= 的非 unicode 字符集的示例是什么?