在RGB色彩空间三个通道的基础上,再增加一个A通道,即alpha通道,这种四个通道的色彩空间称为RGBA通道。alpha通道表示透明度,alpha通道的赋值范围为[0,1],或者[0,255],表示从透明到不透明。

例1 : 编写一个程序,分析其alpha通道的值。

为了演示方便,采用随机数组来模拟图像。

import cv2
import numpy as np
img = np.random.randint(0, 256, size=[2, 3, 3], dtype=np.uint8)
bgra = cv2.cvtColor(img, cv2.COLOR_BGR2BGRA)
print('img = \n', img)
print('bgra=\n', bgra)
b, g, r, a = cv2.split(bgra)
print('a=\n', a)
a[:, :] = 125
bgra = cv2.merge([b, g, r, a])
print('bgra=\n', bgra)

代码比较容易,这里不过多赘述,就是将bgr转换为bgra图像,然后修改a通道的值再合并通道。

运行结果:

img =
[[[247 191 239]
[ 22 251 97]
[ 64 210 236]]

[[108 239 229]
[105 151 30]
[214 200 240]]]
bgra=
[[[247 191 239 255]
[ 22 251 97 255]
[ 64 210 236 255]]

[[108 239 229 255]
[105 151 30 255]
[214 200 240 255]]]
a=
[[255 255 255]
[255 255 255]]
bgra=
[[[247 191 239 125]
[ 22 251 97 125]
[ 64 210 236 125]]

[[108 239 229 125]
[105 151 30 125]
[214 200 240 125]]]

例2: 对图片进行编辑,通过修改其alpha通道的值来展现不同亮度的图。

import cv2
img = cv2.imread('fengjing.png')
bgra = cv2.cvtColor(img, cv2.COLOR_BGR2BGRA)
b, g, r, a = cv2.split(bgra)

a[:, :] = 0
bgra0 = cv2.merge([b, g, r, a])
a[:, :] = 150
bgra125 = cv2.merge([b, g, r, a])
a[:, :] = 225
bgra225 = cv2.merge([b, g, r, a])

cv2.imwrite('bgra0.png', bgra0)
cv2.imwrite('bgra125.png', bgra125)
cv2.imwrite('bgra225.png', bgra225)

cv2.imshow('bgra0', bgra0)
cv2.imshow('bgra125', bgra125)
cv2.imshow('bgra225', bgra225)

myimg = cv2.imread(bgra0.png)
print('myimg=\n', myimg)

cv2.waitKey()

显示结果:

显示结果

存储的图片:

存储的图片

思考:为什么明明alpha通道不同,显示的结果却没有什么区别呢?

继续添加的代码

myimg0=
[[[234 222 202]
[234 222 203]
[234 222 204]
...
[ 19 126 83]
[ 26 137 93]
[ 32 147 102]]]
myimg125=
[[[234 222 202]
[234 222 203]
[234 222 204]
...
[207 132 56]
[207 132 56]
[207 132 56]]

[[ 43 151 104]
[ 80 179 134]
[ 60 158 114]
...
[ 19 126 83]
[ 26 137 93]
[ 32 147 102]]]
myimg225=
[[[234 222 202]
[234 222 203]
[234 222 204]
...
[207 132 56]
[207 132 56]
[207 132 56]]

[[ 43 151 104]
[ 80 179 134]
[ 60 158 114]
...
[ 19 126 83]
[ 26 137 93]
[ 32 147 102]]]

从上面的结果不难知道,显示的只有三个通道,因此alpha通道的影响并没有体现出来。


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

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