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等编辑器中输入下述代码:

python 复制代码
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等编辑器中继续输入下述代码:

python 复制代码
    # 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图像进行通道拆分,补充下述代码:

python 复制代码
    # 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图像进行通道合并,补充下述代码:

python 复制代码
    # 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通道值的基本方法。

相关推荐
zwd20052 分钟前
Manim 画布尺寸与像素换算详解:frame_width、frame_height、pixel_width 和画质参数(0.21.0 实测)
python·分辨率·manim·数学动画·frame_width·manim教程
唐钰小宝B10 分钟前
深度解读 JDK 8、JDK 11、JDK 17 和 JDK 21 的区别
java·开发语言·windows
最强小杰27 分钟前
Claude Opus 4.8 调用报 529 怎么办?并发限制触发过载——退避策略与降级方案完整指南
运维·网络·python·ai
databook40 分钟前
MinMax vs Standard vs Robust:三种特征缩放怎么选
python·机器学习·数据分析
在世修行42 分钟前
智学文枢:实体模型层
python·orm·sqlalchemy
知识分享小能手1 小时前
C学习教程,从入门到精通,C语言指针 —— 详细知识点总结(10)
c语言·开发语言·学习
熊猫钓鱼>_>1 小时前
开源鸿蒙平台 KMP 三方库 kotlin-csv 适配全流程:从编码假设到沙箱真机互通验证
开发语言·人工智能·华为·kotlin·harmonyos·鸿蒙
张张123y1 小时前
# 后端第七课:FastAPI 实战入门(用刚学的 Python 写第一个 API 接口)
开发语言·python·mysql·api·fastapi
CCblandy1 小时前
一致性哈希到底省了多少搬迁?本机实测 3 轮:取模 6→7 搬 85.8%,V=128 只搬 14.3%,虚拟节点太少会被倾斜骗
后端·python·云原生·性能优化·架构
Yan-英杰1 小时前
【论文精读】 基于 TensorFlow 对卷积神经网络的优化研究:异构式 CPU+GPU 协同计算 + ReLU-Swish 激活函数
python·卷积神经网络