摘要:
有时候我们需要对 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