Windows下Python-openCV学习(四)-------色彩空间与通道

本文介绍了在Windows环境下使用Python和OpenCV进行色彩空间转换,包括GRAY色彩空间、HSV色彩空间的转换及通道拆分与合并。通过示例展示了如何将彩色图片转换为灰度图、在HSV空间中操作通道并应用到实际图像处理中,同时提到了alpha通道和透明度的概念。
摘要由CSDN通过智能技术生成

本章简明

色彩空间:
			GRAY色彩空间:cv2.COLOR_BGR2GRAY
			HSV色彩空间: cv2.COLOR_BGR2HSV 、cv2.COLOR_HSV2BGR

通道:
			拆分通道:split()方法
			合并通道:merge()方法
			综合运用拆分通道和合并通道
			alpha通道

色彩空间转换方法

dst=cv2.cvtColor(src,code)
参数:
		
		src : 转换前的初始图像
		code : 色彩空间转换码。
返回值:
		dst : 转换后的图像

将BGR色彩空间转换到GRAY色彩空间时,常用色彩空间转换码是 cv2.COLOR_BGR2GRAY
HSV色彩空间常用 .COLOR_BGR2HSV 、cv2.COLOR_HSV2BGR

GRAY色彩空间
GRAY色彩空间指的就是灰度图,灰度图只有一个色彩通道。灰度图像每个像素都是从黑到白,被分为256个灰度级别,0表示纯黑,1表示纯白。0~255的数值表示不同亮度(即色彩的深浅程度)的深灰色或浅灰色。


示例:将一张彩色图片转换为灰度图片

import cv2
import numpy as np
image = cv2.imread("D:/python_learn/opencv_learn/2.png")
image2=cv2.cvtColor(image,cv2.COLOR_BGR2GRAY)
cv2.imshow("text",image2)
cv2.waitKey()
cv2.destroyAllWindows()

输出:

在这里插入图片描述
HSV色彩通道
BGR空间是基于三基色(红绿蓝)而言的,而HSV色彩空间是基于色调、饱和度和亮度而言的。

色调 H:指的是光的颜色,如彩虹中的赤橙黄绿青蓝紫,分别表示不同的色调。在openCV中色调区间在[0,180]间取
值。例如红色、黄色、绿色、蓝色的色调值分别为,03060120

饱和度 S :指的是色彩的深浅,在openCV中饱和度在区间[0,255]内取值,当饱和度为0时图像将变为灰度图像


亮度 V: 指光的明暗,在openCV中亮度取值范围为[0,255],取值越大亮度越强。当亮度值为0时图像呈现纯黑色

将BGR色彩空间转换为HSV色彩空间

import cv2
import numpy as np
image = cv2.imread("D:/python_learn/opencv_learn/2.png")
image3=cv2.cvtColor(image,cv2.COLOR_BGR2HSV)
image4=cv2.cvtColor(image3,cv2.COLOR_HSV2BGR)
cv2.imshow("BGR",image)
cv2.imshow("HSV",image3)
cv2.imshow("HSV->BGR",image4)
cv2.waitKey()
cv2.destroyAllWindows()
print("text")

输出:
在这里插入图片描述

通道

拆分通道
1、拆分BGR图像中的通道

b,g,r=cv2.split(bgr_image)
参数:
		bgr_image : 一副BGR图像
返回值:
		b :B 通道
		g :G 通道
		r :R 通道

示例:拆分一副BGR图像中的通道

import cv2
import numpy as np
image = cv2.imread("D:/python_learn/opencv_learn/2.png")
b,g,r=cv2.split(image)
cv2.imshow("B",b)
cv2.imshow("G",g)
cv2.imshow("R",r)
#   另一种方法
#   b = img[:, :, 0]
#   g = img[:, :, 1]
#   r = img[:, :, 2]

cv2.waitKey()
cv2.destroyAllWindows()


输出
在这里插入图片描述
2、拆分HSV图像中的通道

h,s,v=cv2.split(hsv_image)
参数:
		bgr_image : 一副BGR图像
返回值:
		h :H 通道
		s :S 通道
		v :V 通道

示例:拆分一副HSV图像中的通道

import cv2
import numpy as np
image = cv2.imread("D:/python_learn/opencv_learn/2.png")
image2=cv2.cvtColor(image,cv2.COLOR_BGR2HSV)
h,s,v=cv2.split(image2)
cv2.imshow("BGR",image)
cv2.imshow("HSV",image2)
cv2.imshow("H",h)
cv2.imshow("S",s)
cv2.imshow("V",v)
cv2.waitKey()
cv2.destroyAllWindows()

输出:
在这里插入图片描述
在这里插入图片描述
合并通道
1、合并BGR色彩通道

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

参数:
		b,g,r分别对应色彩通道
返回值:
		合并通道后得到的BGR图片

示例:合并BGR通道

import cv2
import numpy as np
image = cv2.imread("D:/python_learn/opencv_learn/2.png")
b,g,r=cv2.split(image)
image2=cv2.merge([b,g,r])
cv2.imshow("BGR",image2)
cv2.waitKey()
cv2.destroyAllWindows()

输出:
在这里插入图片描述
1、合并HSV通道
方法同merge

import cv2
import numpy as np
image = cv2.imread("D:/python_learn/opencv_learn/2.png")
image2=cv2.cvtColor(image,cv2.COLOR_BGR2HSV)
h,s,v=cv2.split(image2)
image2=cv2.merge([h,s,v])
cv2.imshow("HSV",image2)
cv2.waitKey()
cv2.destroyAllWindows()

输出
在这里插入图片描述
综合运用

将一副BGR图片转换为HSV图片,提取出HSV图片的H,S,V同通道,将H通道全部设置为180.然后在合并通道得到一张新的HSV图片,再将得到的HSV图片转换为BGR图片,并存储在文件中。

import cv2
import numpy as np
image = cv2.imread("D:/python_learn/opencv_learn/2.png")
image2=cv2.cvtColor(image,cv2.COLOR_BGR2HSV)
h,s,v=cv2.split(image2)
h[:,:]=180
image2=cv2.merge([h,s,v])
image3=cv2.cvtColor(image2,cv2.COLOR_HSV2BGR)
cv2.imwrite("E:hello_world/HSV.png",image3)
cv2.imshow("HSV->BGR",image3)
cv2.waitKey()
cv2.destroyAllWindows()

输出:
在这里插入图片描述
在这里插入图片描述
alpha通道
BGR色彩空间包含了三个通道,即B通道,G通道,R通道,openCV在此基础上有增加了A通道,此通道表示的是透明度。取值范围是[0,255],0表示全透明,255表示不透明
示例:将一张图片转换为半透明

注意:imshow显示方法,无法显示转换后的半透明图像,显示任然为全透明。但可保存文件查看

import cv2
image = cv2.imread("D:/python_learn/opencv_learn/2.png")
image2=cv2.cvtColor(image,cv2.COLOR_BGR2BGRA)
b,g,r,a=cv2.split(image2)
a[:,:]=100
image3=cv2.merge([b,g,r,a])
#cv2.imshow("ALPHA",image3)
cv2.imwrite("E:hello_world/alpha.png",image3)
cv2.waitKey()
cv2.destroyAllWindows()

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值