OpenCV-Python学习教程.3
对于CV2的库来说,一个彩色的照片通道的排序是,返回的图像格式的通道并不是按R、G、B排列的,而是按B、G、R顺序排列的。
b,g,r=cv2.split(image)image=cv2.merge([r,g,b])这里我写一个通道变换正常的代码。
# 导入库import numpy as npimport argparseimport cv2# 构造参数解析器ap = argparse.ArgumentParser()ap.add_argument("-i", "--image", required=True, help="Path to the image")args = vars(ap.parse_args()) # 加载图像image = cv2.imread(args["image"])
# 通道分离,注意顺序BGR不是RGB(B, G, R) = cv2.split(image) # 显示各个分离出的通道cv2.imshow("Red", R)cv2.imshow("Green", G)cv2.imshow("Blue", B)cv2.waitKey(0)这个代码执行后会得到三幅通道分离的照片。



# 导入库import numpy as npimport cv2
image = cv2.imread('./img/111.jpg')
(B, G, R) = cv2.split(image)
# 显示各个分离出的通道print(R.shape)print(G.shape)print(B.shape)# cv2.waitKey(0)

# 导入库import numpy as npimport cv2
image = cv2.imread('./img/111.jpg')
(B, G, R) = cv2.split(image)# cv2.imshow("Red", R)# cv2.imshow("Green", G)# cv2.imshow("Blue", B)# cv2.waitKey(0)# 显示各个分离出的通道print(image.shape)print(R.shape)print(G.shape)print(B.shape)# cv2.waitKey(0)

# 导入库import numpy as npimport cv2zeros = np.zeros(image.shape[:2], dtype="uint8")image = cv2.imread('./img/111.jpg')
(B, G, R) = cv2.split(image)# cv2.imshow("Red", R)# cv2.imshow("Green", G)# cv2.imshow("Blue", B)# cv2.waitKey(0)# 显示各个分离出的通道print(image.shape)print(R.shape)print(G.shape)print(B.shape)
# 生成一个值为0的单通道数组
# 分别扩展B、G、R成为三通道。另外两个通道用上面的值为0的数组填充cv2.imshow("Blue", cv2.merge([B, zeros, zeros]))cv2.imshow("Green", cv2.merge([zeros, G, zeros]))cv2.imshow("Red", cv2.merge([zeros, zeros, R]))cv2.waitKey(0)# cv2.waitKey(0)
# 生成一个值为0的单通道数组zeros = np.zeros(image.shape[:2], dtype = "uint8")
# 分别扩展B、G、R成为三通道。另外两个通道用上面的值为0的数组填充cv2.imshow("Blue", cv2.merge([B, zeros, zeros]))cv2.imshow("Green", cv2.merge([zeros, G, zeros]))cv2.imshow("Red", cv2.merge([zeros, zeros, R]))cv2.waitKey(0)结论是:
cv2.split函数分离得到各个通道的灰度值(单通道图像)。cv2.merge函数是合并单通道成多通道(不能合并多个多通道图像)。
赞 (0)
