[英]Convert numpy array of colour images to a numpy array of gray scale images
如何使用下面的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)
其中somefunction
是答案的占位符。
使用PIL
from PIL import Image
img = Image.open('image.png').convert('LA')
img.save('greyscale.png')
您也可以使用scikit-image
例
from scipy import misc
import matplotlib.image as mpimg
from skimage import data
photo_data = misc.imread("./image.jpg")
x,y,z=photo_data.shape ## where z is the RGB dimension
photo_data[:] = photo_data.mean(axis=-1,keepdims=1)
mpimg.imsave("greyscale.png", photo_data)
根據此答案 ,我不確定這是否通常是最快或最優雅的方式
images_g = np.array([to_grayscale(images[i]) for i in range(images.shape[0])])
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.