转换前后图像的通道没有变化

问题描述 投票:0回答:1

我使用 OpenCV 读取 RGB 图像并通过 matplotlib 打印它。因此,我使用 cvtColor 将 BGR(据我所知,imread 通常读取 BGR 通道)传输到 RGB。但打印后,我检查频道没有改变!看起来

img[:,:,0] == new[:,:,0]

img = cv2.imread(r'E:\jupyter\CVlearn\lab\lab1\Task1.jpg')
print(img[:,:,0])
new = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
print(new[:,:,0])
plt.imshow(new)
plt.show()

然后我尝试直接使用 cvtColor 到输入图像。并且输出似乎有强度反转。我真的不知道会发生什么。

b,g,r = cv2.split(img)
test = cv2.merge((r,g,b))
print(test[:,:,0])
print(img[:,:,0])
plt.imshow(test)
plt.show()
python opencv matplotlib
1个回答
0
投票

哦,我刚刚发现图像是灰色的,但我读取的是 RGB 图像。这会导致一些渠道问题。 主要原因:opencv默认会读取三通道的图像。如果是灰度图/红外图,其图层会被复制3次(默认为RGB),所以读取的图像是三通道的。 如果我们想从一开始就将灰度图像/红外图像作为单通道读取,我们可以在imread()函数中添加相关参数(cv2.IMREAD_GRAYSCALE):img = cv2.imread(img_path, cv2.IMREAD_GRAYSCALE)

© www.soinside.com 2019 - 2024. All rights reserved.