摘要:
有时候我们需要对 BGR 三个通道分别进行操作,就是需要你把BGR 拆分成单个通道 B G R,这叫做拆分;
有时候又需要把独立通道的图片合并成一个 BGR 图像,这叫做合并。
拆分代码:
import cv2 import numpy as np img = cv2.imread("tree.jpg") b, g, r = cv2.split(img) # 拆分 print(b) ''' [[219 219 219 ... 205 200 203] [219 219 219 ... 205 200 203] [219 219 219 ... 206 201 204] ... [ 0 7 8 ... 12 2 14] [ 0 0 0 ... 34 14 18] [ 10 0 0 ... 17 0 0]] ''' print(r) ''' [[ 9 10 10 ... 0 0 2] [ 9 10 12 ... 0 0 2] [ 9 10 12 ... 0 1 3] ... [ 99 81 92 ... 164 144 152] [119 123 117 ... 185 142 137] [102 104 91 ... 138 113 122]] ''' r = 0 # 直接对通道进行赋值(注意:这是是先拆分,再赋值) print(r) ''' 0 '''注意:cv.split()是一个比较耗时的操作,只有真正需要的时候才用这个方法,尽量优先使用 Numpy 索引。
合并代吗:
img = cv2.imread("tree.jpg") b, g, r = cv2.split(img) # 拆分 img=cv2.merge([b,g,r]) # 合并 print(img) # # 或者 # b = img[:, :, 0] # print(img) ''' [[[219 123 9] [219 123 10] [219 123 10] ... [205 105 0] [200 102 0] [203 106 2]] [[219 123 9] [219 123 10] [219 122 12] ... [205 105 0] [200 102 0] [203 106 2]] [[219 123 9] [219 123 10] [219 122 12] ... [206 106 0] [201 103 1] [204 107 3]] ... [[ 0 119 99] [ 7 95 81] [ 8 110 92] ... [ 12 177 164] [ 2 153 144] [ 14 162 152]] [[ 0 144 119] [ 0 150 123] [ 0 142 117] ... [ 34 192 185] [ 14 141 142] [ 18 141 137]] [[ 10 120 102] [ 0 125 104] [ 0 107 91] ... [ 17 136 138] [ 0 107 113] [ 0 125 122]]] '''注意:TypeError: merge() takes at most 2 arguments (3 given) 记得加上中括号,而不是img = cv2.merge(b, g, r),需要的是列表数据类型。
假如你想使所有像素的 红色通道值 都为0,不必拆分再赋值,可以直接使用 Numpy 索引,这会更快
img[:, :, 2] = 0
import cv2 img=cv2.imread('tree.jpg') img[:,:,2]=0 print(img) ''' [[[219 123 0] [219 123 0] [219 123 0] ... [205 105 0] [200 102 0] [203 106 0]] [[219 123 0] [219 123 0] [219 122 0] ... [205 105 0] [200 102 0] [203 106 0]] [[219 123 0] [219 123 0] [219 122 0] ... [206 106 0] [201 103 0] [204 107 0]] ... [[ 0 119 0] [ 7 95 0] [ 8 110 0] ... [ 12 177 0] [ 2 153 0] [ 14 162 0]] [[ 0 144 0] [ 0 150 0] [ 0 142 0] ... [ 34 192 0] [ 14 141 0] [ 18 141 0]] [[ 10 120 0] [ 0 125 0] [ 0 107 0] ... [ 17 136 0] [ 0 107 0] [ 0 125 0]]] '''转载请注明转自:https://blog.csdn.net/Owen_goodman/article/details/107063971