OpenCV-Python色彩空间与通道


GRAY色彩空间

GRAY色彩空间指的是灰度图像,灰度图像是一种每个像素都是从黑到白,被处理为256个灰度级别的单色图像。其中,“0”表示纯黑色,“255”表示纯白色,0~255的数值表示不同亮度的深灰色或者浅灰色

一、从BGR色彩空间转换到GRAY色彩空间

import cv2

image = cv2.imread("z.jpg")
cv2.imshow("z", image)
gray_image = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
cv2.imshow("GRAY", gray_image)
cv2.waitKey()
cv2.destoryAllWindows()

HSV色彩空间

BGR色彩空间是基于三基色而言的,三基色指的是红色、绿色和蓝色
而HSV色彩空间则是基于色调、饱和度和亮度而言的。
其中,色调(H)是指光的颜色,色调在[0,180]内取值。例如,代表红色、黄色、绿色和蓝色的色调的值分别为0、30、60和120。
饱和度(S)是指色彩的深浅,饱和度在[0,255]内取值。当饱和度为0时,图像变为灰度图像。
亮度(V)是指光的明暗,亮度在[0,255]内取值。亮度值越大,图像越亮;当亮度值为0时,图像呈纯黑色。

二、从BGR色彩空间转换到HSV色彩空间

import cv2

image = cv2.imread("z.jpg")
cv2.imshow("z",image)
hsv_image = cv2.cvtColor(image,cv2.COLOR_BGR2HSV)
cv2.imshow("HSV",hsv_image)
cv2.waitKey()
cv2.destoryAllWindows()

通道

在BGR色彩空间中,图像的通道由B通道、G通道和R通道构成。

三、拆分通道

拆分一副BGR、HSV图像中的通道

import cv2

bgr_image = cv2.imread("z.jpg")
cv2.imshow("z", bgr_image)
b, g, r = cv2.split(bgr_image)
cv2.imshow("B", b)
cv2.imshow("G", g)
cv2.imshow("R", r)
cv2.waitKey()

hsv_image = cv2.cvtColor(bgr_image, cv2.COLOR_BGR2HSV)
h, s, v = cv2.split(hsv_image)
cv2.imshow("H", h)
cv2.imshow("S", s)
cv2.imshow("V", v)
cv2.waitKey()

四、合并通道

合并B通道图像、G通道图像和R通道图像;

合并H通道图像、S通道图像和V通道图像

import cv2

bgr_image = cv2.imread("z.jpg")
b, g, r = cv2.split(bgr_image)
hsv_image = cv2.imread("z.jpg")
h, s, v = cv2.split(hsv_image)
hsv = cv2.merge([h, s, v])
bgr = cv2.merge([b, g, r])
bgr2 = cv2.cvtColor(hsv, cv2.COLOR_HSV2BGR)
cv2.imshow("BGR", bgr)
cv2.imshow("BGR2", bgr2)
cv2.waitKey()


五、综合运用拆分通道和合并通道

import cv2

bgr_image = cv2.imread("z.jpg")
cv2.imshow("z", bgr_image)
hsv_image = cv2.cvtColor(bgr_image, cv2.COLOR_BGR2HSV)
h, s, v = cv2.split(hsv_image)
h[:, :] = 180
hsv = cv2.merge([h, s, v])
hsv = image = cv2.cvtColor(hsv, cv2.COLOR_HSV2BGR)
new_image = cv2.cvtColor(hsv, cv2.COLOR_HSV2BGR)
cv2.imshow("NEW", new_image)
cv2.waitKey()

alpha通道

BGR色彩空间包含了3个通道,即B通道、G通道和R通道。OpenCV在BGR色彩空间的基础上,又增加了一个用于设置图像透明度的A通道,即alpha通道

六、调成A通道的值

import cv2

bgr_image = cv2.imread("z.jpg")
bgra_image = cv2.cvtColor(bgr_image,cv2.COLOR_BGR2BGRA)
cv2.imshow("BGRA",bgr_image)
b,g,r,a = cv2.split(bgra_image)
a[:,:] = 172
bgra_172 = cv2.merge([b,g,r,a])
a[:,:] = 0
bgra_0 = cv2.merge([b,g,r,a])
cv2.imshow("A",bgra_172)
cv2.imshow("0",bgra_0)
cv2.waitKey()

PNG图像是一种典型的4通道(即B通道、G通道、R通道和A通道)图像。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值