在 Python 中将 3 张灰度图像合并为 1 张自然色图像

Combine 3 grayscale images to 1 natural color image in Python

我正在处理 Kaggle.com 上的数据集: https://www.kaggle.com/sorour/38cloud-cloud-segmentation-in-satellite-images 我要做的是将代表 3 个通道(R、G、B)的 3 个灰度图像组合成一个自然彩色图像。所以这是我尝试过的:

r_np = np.array(cv2.imread(red, 0))
g_np = np.array(cv2.imread(green, 0))
b_np = np.array(cv2.imread(blue, 0))

# Add the channels to the final image
final_img = np.dstack([b_np, g_np, r_np]).astype(np.uint8)

# Directory to save
final_img_dir = store_directory + "\" + "img" + image_id

# Save the needed multi channel image
cv2.imwrite(final_img_dir, final_img)

并且它的输出是一张静止的灰度图像。我的图像格式是 .TIF。 提前致谢!

你的代码有几个问题:

首先,您需要导入模块:

import numpy as np
import cv2

其次,您使用的是丑陋的、明显的常量,而不是 OpenCV 免费提供的漂亮、易读、可维护的常量,而且您不必要地将从 cv2.imread() 获得的 Numpy 数组包装到 Numpy 数组中。

最后,你没有检查错误。

所以,而不是:

r_np = np.array(cv2.imread(red, 0))

考虑:

r_np = cv2.imread(filename, cv2.IMREAD_GRAYSCALE)
assert r_np is not None, "ERROR: Error reading red image"