由前面的知识,我们知道,彩色的图片由RGB三个通道完成,在Opencv中,注意通道的顺序是B->G->R,在图像处理中,可以根据需要对通道进行拆分和合并。在图像操作时,有时还需要获得图像的属性,例如大小、类型等。

通道拆分

针对RGB图形,可以分别拆分出R通道、G通道和B通道,Opencv中有两种拆分方式,一种是通过索引来拆解,也可以通过函数来拆解。

通过索引拆解

b = img[:,:,0]
g = img[:,:,1]
r = img[:,:,2]

例1:读取一张图片,将其通道拆解并观察颜色变化。

import cv2
img = cv2.imread('hongmao.jpg')
cv2.imshow('1', img)
imgb = img[:, :, 0]
imgg = img[:, :, 1]
imgr = img[:, :, 2]
cv2.imshow('r', imgr)
cv2.imshow('g', imgg)
cv2.imshow('b', imgb)
cv2.waitKey()

不同通道的显示

通过函数拆分

cv2.split()函数能够拆分图像通道。

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

也可以分开写,是等价的:

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

例:使用split函数对图像进行拆分通道,并显示出来。

import cv2
img = cv2.imread('hongmao.jpg')
cv2.imshow('1', img)
imgb, imgg, imgr = cv2.split(img)
cv2.imshow('r', imgr)
cv2.imshow('g', imgg)
cv2.imshow('b', imgb)
cv2.waitKey()

通道拆分显示

通道合并

通道合并是通道拆分的逆过程。

需要使用下面函数来实现通道的合并。

cv2.merge()

例1:读取一张图片,拆解通道之后进行不同的顺序组合,查看效果差异。

import cv2
img = cv2.imread("hongmao.jpg")
cv2.imshow('12', img)
imgb, imgg, imgr = cv2.split(img)
rgbimg = cv2.merge([imgr, imgg, imgb])
bgrimg = cv2.merge([imgb, imgg, imgr])
grbimg = cv2.merge([imgg, imgb, imgr])
cv2.imshow('rgb', rgbimg)
cv2.imshow('bgr', bgrimg)
cv2.imshow('grb', grbimg)
cv2.waitKey()

从结果也不难看出来,brg通道的结果和原图是一样的
不同的通道组合

获取图像属性

通过windows系统软件查看图像属性

通常文件都有属性,选中一个图片,右击鼠标,选择”属性“项目,就能获得这个图片的一些属性,如上图所示。

那么,如何通过函数的方法获得图片的属性呢?

shape : 如果是彩色图像,则返回包含行数、列数、通道数的数组;如果是二值图像或者灰度图像,则仅返回行数和列数。

size : 返回图像的像素数目。其值为“行X列X通道数”,灰度图图像或者二值图像的通道为1

dtype : 返回图像的数据类型

例:编写程序,观察图像的常用属性。

import cv2
img1 = cv2.imread("hongmao.jpg", 0)  # 灰度图
img2 = cv2.imread("hongmao.jpg")  # RGB图
print('RGB图像的属性:')
print('shape是', img2.shape)
print('size是', img2.size)
print('dtype是', img2.dtype)
print('\n')
print('灰度图像的属性:')
print('shape是', img1.shape)
print('size是', img1.size)
print('dtype是', img1.dtype)

结果是:
RGB图像的属性:
shape是 (277, 358, 3)
size是 297498
dtype是 uint8

灰度图像的属性:
shape是 (277, 358)
size是 99166
dtype是 uint8

图像分辨率


博主个人公众号
版权声明 ▶ 本网站名称:陶小桃Blog
▶ 本文链接:https://www.52txr.cn/2021/OpenCV6.html
▶ 本网站的文章部分内容可能来源于网络,仅供大家学习与参考,如有侵权,请联系站长进行核实删除。
▶ 转载本站文章需要遵守:商业转载请联系站长,非商业转载请注明出处!!

最后修改:2022 年 05 月 24 日
如果觉得我的文章对你有用,请随意赞赏