如何从 RGB 图像中提取单个通道
How to extract individual channels from an RGB image
我发现 opencv 文档使用 cv2.split (img) 命令从 RGB 图像中提取单个通道,但它并不是真正的 return 所选通道的图像。它们看起来都像灰度。有人能帮我吗?我附上照片。
b = img[:,:,0]
g = img[:,:,1]
r = img[:,:,2]
or
b,g,r = cv2.split(img)
起始图片 =
提取的红色通道 =
提取正确吗?
全红通道-img在哪?
在任何一种方法中,您都在创建灰度图像,因此绘制它不会显示它所源自的通道的颜色。
您可以使用颜色图为显示的图像添加颜色,或者通过将其他通道设置为 0 将其转换为 RGB 图像。
plt.imshow(r, cmap='Reds')
或
img = np.stack([r, np.zeros_like(r), np.zeros_like(r)], axis=-1)
plt.imshow(img)
提取的红色通道可能看起来像灰度图像,但它是正确的。它只是一个二维数组,其值在 [0,255]
范围内。要可视化特定通道,您需要将其他通道设置为零。所以要显示红色通道,需要将蓝色和绿色通道设置为零。
import cv2
img = cv2.imread('1.jpg')
# Set blue and green channels to 0
img[:,:,0] = 0
img[:,:,1] = 0
cv2.imshow('red_img', img)
cv2.waitKey()
我发现 opencv 文档使用 cv2.split (img) 命令从 RGB 图像中提取单个通道,但它并不是真正的 return 所选通道的图像。它们看起来都像灰度。有人能帮我吗?我附上照片。
b = img[:,:,0]
g = img[:,:,1]
r = img[:,:,2]
or
b,g,r = cv2.split(img)
起始图片 =
提取正确吗? 全红通道-img在哪?
在任何一种方法中,您都在创建灰度图像,因此绘制它不会显示它所源自的通道的颜色。
您可以使用颜色图为显示的图像添加颜色,或者通过将其他通道设置为 0 将其转换为 RGB 图像。
plt.imshow(r, cmap='Reds')
或
img = np.stack([r, np.zeros_like(r), np.zeros_like(r)], axis=-1)
plt.imshow(img)
提取的红色通道可能看起来像灰度图像,但它是正确的。它只是一个二维数组,其值在 [0,255]
范围内。要可视化特定通道,您需要将其他通道设置为零。所以要显示红色通道,需要将蓝色和绿色通道设置为零。
import cv2
img = cv2.imread('1.jpg')
# Set blue and green channels to 0
img[:,:,0] = 0
img[:,:,1] = 0
cv2.imshow('red_img', img)
cv2.waitKey()