2.5通道操作

在 RGB 图像中,图像是由R 通道、G 递道、B 通道三个通道构成的。需要注意的是,在 openCV中,通道是按照B 通道→G 通道→R 通道的顺序存储的

在图像处理过程中,可以根据需要对通道进行拆分和合并。本节就来介绍如何对通道进行拆分和合并

2.5.1 通道拆分

针对 RGB 图像,可以分别拆分出其R 通道、G 通道、B 通道。在 Opencv中,既可以运过索引的方式拆分通道,也可以通过函数的方式诉分通道

1.通过索引拆分

通过索引的方式,可以直接将各个通道从图像内提取出来。例如,针对 OpenCV 内的 BGR图像 img,如下语句分别从中提取了B 通道、G 通道、R 通道

b = img[:,:,0]

g = img[:,:,1]

r = img[:,:,2]

【例 2.16】編写程序,演示图像通道拆分及通道值改变对彩色图像的影响

根据题目要求,编写代码如下:


import cv2
lena=cv2.imread("C:\\Users\\Administrator\\Desktop\\opencv\\lenacolor.png")
cv2.imshow("lena1",lena)
b=lena[:,:,0]
g=lena[:,:,1]
r=lena[:,:,2]
cv2.imshow("b",b)
cv2.imshow("g",g)
cv2.imshow("r",r)
lena[:,:,0]=0
cv2.imshow("lenab0",lena)
lena[:,:,1]=0
cv2.imshow("lenab0g0",lena)
cv2.waitKey()
cv2.destroyAllWindows()

本例实现了通道拆分和通道值改变:
语句 b= lena[:,:,0] 获取了图像 img的B 通道
语句 g=lena[:,:,1]获取了图像 img的G 通道
语句 r=lena[:,:,2]获取了图像 img的R 通道
语句lena[:,:,0]]=0 将图像 img的B 通道值设置为 0
语句lena[:,:,1]=0 将图像 img的G 通道值设置为0

图(a)是原始图像 lena
图(b)是原始图像 lena的B 通道图像b
图(c)是原始图像 lena的G 通道图像
图(d)是原始图像 lena的R 通道图像r。
图(e)是将图像 lena中B 通道值置为0 后得到的图像。
图(f )是将图像 lema中B 通道值、G 通道值均置为0 后得到的图像。

1561556872.png

2.通过函数拆分

函数 cv2.split() 能够拆分图像的通道。例如,可以使用如下语句拆分彩色 BGR 图像 img得到B 通道图像 b,G 通道图像g和R 通道图像r

b,g,r = cv2.split(img)

上述语句与如下语句是等价的

b = cv2.split(a)[0]
g = cv2.split(a)[1]
r = cv2.split(a)[2]

【例 2.17】编写程序,使用函数 cv2.split()拆分图像通道

根据题日要求,編写代码如下

import cv2
lena=cv2.imread("C:\\Users\\Administrator\\Desktop\\opencv\\lenacolor.png")
b,g,r=cv2.split(lena)
cv2.imshow("B",b)
cv2.imshow("G",g)
cv2.imshow("R",r)
cv2.waitKey()
cv2.destroyAllWindows()

运行上述程序,得到如图 2-22 所示的三个通道图像,其中
左图是B 通道图像b
中间的图是G 通道图像g
右图是R 通道图像r。


1561557210(1).png

2.5.2 通道合井

通道合并是通道拆分的逆过程,通过合并通道可以将三个通道的灰度图像构成一幅彩色像,函数 cv2.merge() 可以实现图像通道的合并,例如有B 通道图像b、G 通道图像g和R 通道图像r,使用函数 cv2.merge() 可以将这三个通道合并为一幅 BGR 的三通道彩色图像。其实
现语句为

bgr = cv2.merge([b,g,r])

【例 2.18】编写程序,演示使用函数cv2.merge()合开通道

根据题目要求,编写代码如下

import cv2
lena=cv2.imread("C:\\Users\\Administrator\\Desktop\\opencv\\lenacolor.png")
b,g,r=cv2.split(lena)
bgr=cv2.merge([b,g,r])
rgb=cv2.merge([r,g,b])
cv2.imshow("lena",lena)
cv2.imshow("bgr",bgr)
cv2.imshow("rgb",rgb)
cv2.waitKey()
cv2.destroyAllWindows()

在本例中,首先对 BGR 图像进行了拆分,接下来又对其进行了两种不同形式的合并。
语句b,g,r=cv2.split(lena) 对图像 lena 进行拆分,得到b、g、r 这三个通道
语句 bgr=cv2.merge([b,g,r])对通道 b,g、r 进行合并,合并顺序为B 通道一G 通道 →R通道,得到图像 bgr
语句rgb=cv2.merge([r,g,b]) 对通道r、g、b 进行合并,合并顺序为R 通道一G通道一B通道,得到图像 rgb

1561557638(1).png

左图是原始图像 lena
中间的图是 lena 图像经过通道拆分,合并后得到的 BGR 通道顺序的彩色图像 bgr
右图是 lena 图像经过通道拆分、合并后得到的 RGB 通道顺序的彩色图像 rgb

2.6 获取图像属性

在图像处理过程中,经常需要获取图像的属性,例如图像的大小、类型等。这里介绍几个
常用的属性。

shape:如果是彩色图像,则返回包含行数、列数、通道数的数组:如果是二值图像或灰度图像,则仅返回行数和列数。通过该属性的返回值是否包含通道数,可以判断一幅图像是灰度图像(或二值图像)还是彩色图像

size:返回图像的像素数。其值为“行x列x 通道数”,灰度图像或者二值图像的通道 数为1
dtype:返回图像的数据类型

【例 219】编写程序,察图像的常用属性值

 根据题目要求,编写代码如下
import cv2
gray=cv2.imread("C:\\Users\\Administrator\\Desktop\\opencv\\lena.bmp",0)
color=cv2.imread("C:\\Users\\Administrator\\Desktop\\opencv\\lenacolor.png")
print("图像gray属性:")
print("gray.shape=",gray.shape)
print("gray.size=",gray.size)
print("gray.dtype=",gray.dtype)
print("图像color属性:")
print("color.shape=",color.shape)
print("color.size=",color.size)
print("color.dtype=",color.dtype)

本例中,分别读取了灰度图像gray和彩色图像color 并分别观察了他们的shape,size,dtype

图像gray属性:
gray.shape= (256, 256)
gray.size= 65536
gray.dtype= uint8
图像color属性:
color.shape= (512, 512, 3)
color.size= 786432
color.dtype= uint8

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,496评论 6 501
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,407评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,632评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,180评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,198评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,165评论 1 299
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,052评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,910评论 0 274
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,324评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,542评论 2 332
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,711评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,424评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,017评论 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,668评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,823评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,722评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,611评论 2 353

推荐阅读更多精彩内容