OPENCV BGRA四通道图像

本demo输入一张24位BGR真彩色图像,输出32位BGRA带透明通道的彩色图像。
在输出前,对Alpha透明通道做了些处理。源24位真彩色图像的左下角置为透明。
在运行中查看BGRA四通道图片时,是无法查看到透明通道的。
必须要把图片保存下来,才能看到。
目前支持Alpha透明通道的图片封装格式为:
1、PNG:支持透明效果。PNG可以为原图像定义256个透明层次,使得彩色图像的边缘能与任何背景平滑地融合,从而彻底地消除锯齿边缘。这种功能是GIF和JPEG没有的。
2、gif:GIF的原义是“图像互换格式”,GIF文件的数据是一种基于LZW算法的连续色调的无损压缩格式。
3、TIFF:签图像文件格式(TaggedImageFileFormat,简写为TIFF)是一种灵活的位图格式,主要用来存储包括照片和艺术图在内的图像。它最初由Aldus公司与微软公司一起为PostScript打印开发。TIFF与JPEG和PNG一起成为流行的高位彩色图像格式。
4、PSD:这是Photoshop图像处理软件的专用文件格式,文件扩展名是。psd,可以支持图层、通道、蒙板和不同色彩模式的各种图像特征,是一种非压缩的原始文件保存格式。扫描仪不能直接生成该种格式的文件。PSD文件有时容量会很大,但由于可以保留所有原始信息,在图像处理中对于尚未制作完成的图像,选用PSD格式保存是最佳的选择。

import cv2
import numpy as np

img=cv2.imread("cat.jpg")
img_bgra=cv2.cvtColor(img,cv2.COLOR_BGR2BGRA)
print(img_bgra.shape)
print(img_bgra)
b, g, r ,a= cv2.split(img_bgra)
print(a)
print(a.shape)
a[int(a.shape[0]/2):,int(a.shape[1]/2):]=0
#creating a dummy alpha channel image.
# alpha = np.ones(b.shape, dtype=b.dtype)*0
# print(alpha)
#alpha = alpha.astype(np.uint8)

img_bgra = cv2.merge((b, g, r, a))
print(img_bgra.shape)
#cv2.imshow("BGRA", img_bgra)
cv2.imwrite("BGRA.tiff",img_bgra)
#cv2.waitKey(0)
'''
这里不保存下来查看的话,在程序运行中展示并看不出差异。
保存图片时,要保存为png格式的图片,因为png或tiff文件即为BGRA四通道色彩空间的图像文件形式。
'''

'''
(572, 642, 4)
[[[ 20  14   7 255][ 15   9   2 255][ 14   8   1 255]...[ 12  13  11 255][ 26  23  19 255][ 26  23  19 255]]
 [[ 22  16   9 255][ 18  12   5 255][ 18  12   5 255]...[ 13  11  10 255][  7   4   0 255][  7   4   0 255]]
 [[ 20  14   7 255][ 17  11   4 255][ 17  11   4 255]...[ 16  14  13 255][ 15  12   8 255][ 15  12   8 255]]
 ...
 [[ 14  10   5 255][ 14  10   5 255][ 13   9   4 255]...[ 66  60  49 255][ 41  32  22 255][ 64  55  45 255]]
 [[ 14  10   5 255][ 14  10   5 255][ 13   9   4 255]...[ 43  37  26 255][ 37  28  18 255][ 57  48  38 255]]
 [[ 13   9   4 255][ 13   9   4 255][ 13   9   4 255]...[ 16  10   0 255][ 13   4   0 255][ 29  20  10 255]]]
'''

具体效果如下:
在这里插入图片描述
请添加图片描述
请添加图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值