02 OpenCV图像通道处理

简介: 在数字图像处理中,图像通道是指一个图像中的颜色信息被分离为不同的颜色分量。常见的图像通道包括RGB通道、灰度通道、HSV通道等。RGB通道是指将图像分离为红色、绿色和蓝色三个颜色通道,每个通道表示相应颜色的亮度。这种方式是最常见的方式,它对于彩色图像的处理非常重要。

1 通道提取与合并


在数字图像处理中,图像通道是指一个图像中的颜色信息被分离为不同的颜色分量。常见的图像通道包括RGB通道、灰度通道、HSV通道等。


RGB通道是指将图像分离为红色、绿色和蓝色三个颜色通道,每个通道表示相应颜色的亮度。这种方式是最常见的方式,它对于彩色图像的处理非常重要。


灰度通道是指将图像中的颜色信息转换为灰度亮度值,用单个通道表示整幅图像。这种方式比较适用于黑白图像或者在彩色图像中只需要考虑图像的亮度信息时。


HSV通道是指将图像中的颜色信息分离为色调(H)、饱和度(S)和亮度(V)三个通道。这种方式在对颜色变化的控制上比RGB更加直观,更适用于图像处理中的颜色调整。


在图像处理中,通常使用不同的通道来处理和操作图像。例如,使用灰度通道可以使图像变得更容易处理,因为只需要考虑单个通道,而使用RGB通道可以使图像更容易在彩色显示设备上显示。在处理和分析图像时,选择适当的通道和通道组合是非常重要的,可以帮助我们更好地理解和控制图像。


1 数组形式


可以以数组的形式提取指定通道数据,也可以使用cv2的split提取指定通道数据。

通过索引的方式,可以直接将各个通道从图像内提取出来。通道的信息在每行数组的最后一列。


# 以下代码使用数组的形式对通道进行处理
import cv2  
lena = cv2.imread("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)


以上代码可以分别提取出BGR三个通道的数据并作展示。需注意的是cv2的通道顺序不是我们所熟悉的RGB。

lena[:, :, 0] = 0  
cv2.imshow("lenab0", lena)  
lena[:, :, 1] = 0  
cv2.imshow("lenab0g0", lena)  
cv2.waitKey()  
cv2.destroyAllWindows()


以上代码可以实现对某一通道批量赋值,对某一通道的值赋值为0,即在某种程度上删除了这一通道。处理后的图片将发生色度上的变化。


81805a5a2c27a6f7857835d2802c4a60.png





2 split与merge形式


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


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


以上是使用split提取通道的两种方法。

对BGR通道处理后,为了展示图形,还需要将三个通道合并。

bgr = cv2.merge([b, g, r])  
rgb = cv2.merge([r, g, b])  
cv2.imshow("real", bgr)  
cv2.imshow("fake", rgb)


正常情况下,我们仍需按照BGR的顺序将图进行组合。但如果我们不按此顺序或引入了其他波段的数据,就产生了假图(遥感领域学生对此概念会更加熟悉)。


ee10b6d6b888ca5bc6e5e6cc2463604b.png

相关文章
|
4月前
|
计算机视觉
Opencv学习笔记(三):图像二值化函数cv2.threshold函数详解
这篇文章详细介绍了OpenCV库中的图像二值化函数`cv2.threshold`,包括二值化的概念、常见的阈值类型、函数的参数说明以及通过代码实例展示了如何应用该函数进行图像二值化处理,并展示了运行结果。
922 0
Opencv学习笔记(三):图像二值化函数cv2.threshold函数详解
|
5月前
|
算法 计算机视觉
opencv图像形态学
图像形态学是一种基于数学形态学的图像处理技术,它主要用于分析和修改图像的形状和结构。
76 4
|
5月前
|
存储 计算机视觉
Opencv的基本操作(一)图像的读取显示存储及几何图形的绘制
本文介绍了使用OpenCV进行图像读取、显示和存储的基本操作,以及如何绘制直线、圆形、矩形和文本等几何图形的方法。
Opencv的基本操作(一)图像的读取显示存储及几何图形的绘制
|
6月前
|
算法 计算机视觉 Python
python利用opencv进行相机标定获取参数,并根据畸变参数修正图像附有全部代码(流畅无痛版)
该文章详细介绍了使用Python和OpenCV进行相机标定以获取畸变参数,并提供了修正图像畸变的全部代码,包括生成棋盘图、拍摄标定图像、标定过程和畸变矫正等步骤。
python利用opencv进行相机标定获取参数,并根据畸变参数修正图像附有全部代码(流畅无痛版)
WK
|
6月前
|
编解码 计算机视觉 Python
如何在OpenCV中进行图像转换
在OpenCV中,图像转换涉及颜色空间变换、大小调整及类型转换等操作。常用函数如`cvtColor`可实现BGR到RGB、灰度图或HSV的转换;`resize`则用于调整图像分辨率。此外,通过`astype`或`convertScaleAbs`可改变图像数据类型。对于复杂的几何变换,如仿射或透视变换,则可利用`warpAffine`和`warpPerspective`函数实现。这些技术为图像处理提供了强大的工具。
WK
181 1
|
8月前
|
算法 计算机视觉
【Qt&OpenCV 图像的感兴趣区域ROI】
【Qt&OpenCV 图像的感兴趣区域ROI】
282 1
|
8月前
|
运维 算法 计算机视觉
【Qt&OpenCV 图像的模板匹配 matchTemplate/minMaxLoc】
【Qt&OpenCV 图像的模板匹配 matchTemplate/minMaxLoc】
113 1
|
8月前
|
存储 编解码 算法
【Qt&OpenCV 检测图像中的线/圆/轮廓 HoughLinesP/HoughCircles/findContours&drawContours】
【Qt&OpenCV 检测图像中的线/圆/轮廓 HoughLinesP/HoughCircles/findContours&drawContours】
147 0
|
7月前
|
机器学习/深度学习 XML 计算机视觉
OpenCV(Open Source Computer Vision Library)是一个开源的计算机视觉和机器学习库,它提供了大量的函数和工具,用于处理图像和视频数据。
OpenCV(Open Source Computer Vision Library)是一个开源的计算机视觉和机器学习库,它提供了大量的函数和工具,用于处理图像和视频数据。
|
8月前
|
算法 计算机视觉
【Qt&OpenCV 图像边缘检测 Sobel/Laplace/Canny】
【Qt&OpenCV 图像边缘检测 Sobel/Laplace/Canny】
98 0