python学opencv|读取图像(十七)认识alpha通道
【1】引言
前序学习进程中,我们已经掌握了RGB和HSV图像的通道拆分和合并,获得了很多意想不到的效果,相关链接包括且不限于:
python学opencv|读取图像(十二)BGR图像转HSV图像-CSDN博客
python学opencv|读取图像(十四)BGR图像和HSV图像通道拆分-CSDN博客
python学opencv|读取图像(十五)BGR图像和HSV图像通道合并-CSDN博客
实际上,在RGB图像中,还可以增加一个通道,增加通道的目的是调整图像的透明度,这就是alpha通道的来源。alpha通道的取值范围是[0,255],
今天我们就一起认识一下alpha通道。
【2】代码测试
【2.1】读取图像
首先是读取图像,在pycharm等编辑器中输入下述代码:
import cv2 as cv # 引入CV模块
import numpy as np # 引入numpy模块
bgr_image = cv.imread('cv-ini-000.png')
if bgr_image is not None:
cv.imshow('cv-ini-000', bgr_image) # 在屏幕上展示图片
cv.waitKey() # 不会自动关闭图像
cv.destroyAllWindows() # 释放所有窗口
else:
print("There is no any photo")
这一步只是把原图读进来,原图cv-ini-000.png为:
图1 cv-ini-000.png
【2.2】BGR转BGRA
之后是将BGR图像转化为BGRA图像,这里的A就是增加了alpha通道后的意思。
在pycharm等编辑器中继续输入下述代码:
# BGR转BGRA
bgra_image = cv.cvtColor(bgr_image, cv.COLOR_BGR2BGRA) # BGR转HSV
cv.imshow('cv-ini-000-BGRA', bgra_image) # 在屏幕上展示图片
cv.imwrite('cv-ini-000-save-BGRA.png', bgra_image) # 保存图片
代码运行后,获得的BGRA图像cv-ini-000-save-BGRA.png为:
图2 cv-ini-000-save-BGRA.png
【2.3】BGR转BGRA
之后是将BGRA图像进行通道拆分,补充下述代码:
# BGRA通道拆分
b,g,r,a=cv.split(bgra_image) #BGRA通道拆分
cv.imshow('cv-ini-000-BGRA-A', a) # 在屏幕上展示图片
cv.imwrite('cv-ini-000-save-BGRA-A.png', a) # 保存图片
运行代码后,获得的a通道图像为:
图3 cv-ini-000-save-BGRA-A.png
【2.4】修改A通达数值,然后合并回BGRA图像
在图3中,可以发现纯A通道的图像啥也看不出来。
所以,之后是将A通道重新赋值,再对BGRA图像进行通道合并,补充下述代码:
# BGRA通道合并
a[:,:]=120
bgra120_image=cv.merge([b,g,r,a]) #BGRA通道合并
cv.imshow('cv-ini-000-BGRA-A=120', bgra120_image) # 在屏幕上展示图片
cv.imwrite('cv-ini-000-save-BGRA-A=120.png', bgra120_image) # 保存图片
a[:,:]=30
bgra30_image=cv.merge([b,g,r,a]) #BGRA通道合并
cv.imshow('cv-ini-000-BGRA-A=30', bgra30_image) # 在屏幕上展示图片
cv.imwrite('cv-ini-000-save-BGRA-A=30.png', bgra30_image) # 保存图片
a[:,:]=0
bgra0_image=cv.merge([b,g,r,a]) #BGRA通道合并
cv.imshow('cv-ini-000-BGRA-A=0', bgra0_image) # 在屏幕上展示图片
cv.imwrite('cv-ini-000-save-BGRA-A=0.png', bgra0_image) # 保存图片
代码运行后,以此获得的图像为:
图4 cv-ini-000-save-BGRA-A=120.png 透明度120
图5 cv-ini-000-save-BGRA-A=30.png 透明度30
图6 cv-ini-000-save-BGRA-A=0.png 透明度0
综上所述,改变A通道的值可以改变图片透明度。
【3】总结
体会了alpha通道的基本功能,掌握了调整alpha通道值的基本方法。