python - 将灰度图像内容复制到 3 个通道
问题描述
我正在使用ImageDataGenerator
. 我需要将每个灰度图像的内容复制到 3 个通道中。我尝试了以下代码,但似乎无法正常工作:
def grayscale_to_rgb(images, channel_axis=-1):
images= K.expand_dims(images, axis=channel_axis)
tiling = [1] * 4 # 4 dimensions: B, H, W, C
tiling[channel_axis] *= 3
images= K.tile(images, tiling)
return images
train_images_orign= grayscale_to_rgb(train_images_orign)
valid_images_orign= grayscale_to_rgb(valid_images_orign)
test_images_orign= grayscale_to_rgb(test_images_orign)
x_train, y_train = next(train_images_orign)
x_valid, y_valid = next(valid_images_orign)
x_test, y_test = next(test_images_orign)
我应该朝哪个方向努力?
解决方案
更新:事实证明,load_img
Keras 中的函数已经以这样一种方式实现,如果正在加载的图像的颜色模式和给定的color_mode
参数(默认为'RGB'
)不同,那么图像将被转换为给定的color_mode
。因此,在这种情况下,灰度图像将自动转换为 RGB。
您也可以使用preprocessing_function
of 的参数ImageDataGenerator
(假设您使用的是color_mode='grayscale'
,否则上述注释适用):
import numpy as np
def gray_to_rgb(img):
return np.repeat(img, 3, 2)
generator = ImageDataGenerator(..., preprocessing_function=gray_to_rgb)
train_gen = generator.flow_from_directory(color_mode='grayscale', ...)
请注意,此功能在任何图像增强后应用:
preprocessing_function:每个输入都隐含的函数。该函数将在图像调整大小和增强后运行。该函数应采用一个参数:一张图像(等级为 3 的 Numpy 张量),并且应输出具有相同形状的 Numpy 张量。
推荐阅读
- html - Bootstrap 4 Scrollspy 无法正确更改 IE 中的活动列表项
- search - solr search 如何处理 contains +phone
- junit - 基于 ActivitiRule 的单元测试中未调用 TaskListener
- javascript - laravel form bootstrap-select 无法正常工作
- c# - 防伪令牌无法解密?[无法摆脱这个奇怪的错误]
- python - 使用python登录booking.com
- php - 如何在 PHP 中获取关联数组的索引?
- ios - 如何将旧项目移动到 PersistentContainer
- c++ - 这个 OpenCV 矩阵表达式是什么意思?
- javascript - 在Javascript中单击标题时按升序和降序对表格进行排序