首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在Python中将3通道rgb彩色图像转换为1通道灰色的速度有多快?

在Python中将3通道rgb彩色图像转换为1通道灰色的速度有多快?
EN

Stack Overflow用户
提问于 2017-02-01 04:03:52
回答 2查看 20.5K关注 0票数 3

我有近40000张包含原始像素数据的4D数组中的图像-(示例数量、宽度、高度、通道)。每个图像的宽度为32像素,高度为32像素,RGB颜色有3个通道。我想将它们更改为灰度图像(从3个rgb通道到1个强度通道)。我怎么才能做得很快呢?我的代码:

代码语言:javascript
复制
import pickle
import cv2
training_file = "/train.p"

with open(training_file, mode='rb') as f:
train = pickle.load(f)
X_train = train['features']

def rgb2gray(rgb):
    r, g, b = rgb[0], rgb[1], rgb[2]
    gray = 0.2989 * r + 0.5870 * g + 0.1140 * b
return gray

X_train_gray = X_train.copy()

for i in range (X_train_gray.shape[0]):
    for j in range (X_train_gray.shape[1]):
        for k in range (X_train_gray.shape[2]):
            rgb = X_train_gray[i,j,k]
            gray = rgb2gray(rgb)
            X_train_gray[i,j,k] = gray

print("X_train image data shape =", X_train.shape)
print("X_train_grey image data shape =", X_train_gray.shape)

结果:

X_train_grey图像数据形状= (40000,32,32,3)

X_train_grey图像数据形状= (40000,32,32,1)

这很好,但要花很多时间。

我还尝试使用cv2:

代码语言:javascript
复制
X_train_gray = X_train[0].copy()
print("X_train_grey image data shape =", X_train_gray.shape)
X_train_gray = cv2.cvtColor(X_train_gray, cv2.COLOR_BGR2GRAY)
print("X_train_grey image data shape =", X_train_gray.shape)

结果:

X_train_grey图像数据形状= (32,32,3)

X_train_grey图像数据形状= (32,32)

但我失去了强度,不知道如何获得它。

那么,如何快速地将此图像从3通道rgb更改为1通道灰度?

EN

回答 2

Stack Overflow用户

发布于 2019-09-18 22:00:07

如果您可以使用PIL。应该没问题。我有RGB图像并将其转换为:

代码语言:javascript
复制
from PIL import Image
img = Image.open("image_file_path") #for example image size : 28x28x3
img1 = img.convert('L')  #convert a gray scale
print(img1.size)
>> (28,28)

但是图像没有通道

代码语言:javascript
复制
y = np.expand_dims(img1, axis=-1)
print(y.shape)
>> (28,28,1)
票数 7
EN

Stack Overflow用户

发布于 2017-02-02 21:13:16

尝试使用:

代码语言:javascript
复制
cv::cvtColor(gray_img,color_img,CV_GRAY2BGR)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41966514

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档