在 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"
我正在处理 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"