OpenCV中拆分通道、合并通道、alpha通道的讲解及实战演示(附python源码 超详细)
需要源码和图片请点赞关注收藏后评论区留言私信~~~
在BGR色彩空间中,图像的通道由B通道、G通道和B通道构成,下面将介绍OpenCV提供的方法拆分和合并通道
一、拆分通道
为了拆分图像中的通道 OpenCV提供了split方法
1:拆分一幅BGR图像中的通道
当使用split方法拆分一幅BGR图像中的通道时 语法如下
b,g,r=cv2.split(bgr_image)
参数说明bgr分别为BGR通道图像
bgr_image为一幅BGR图像
下面先拆分通道 然后再显示拆分后的通道图像
代码如下
import cv2bgr_image = cv2.imread("5.1.jpg")
cv2.imshow("5.1", bgr_image) # 显示图5.1
b, g, r = cv2.split(bgr_image) # 拆分图5.1中的通道
cv2.imshow("B", b) # 显示图5.1中的B通道图像
cv2.imshow("G", g) # 显示图5.1中的G通道图像
cv2.imshow("R", r) # 显示图5.1中的R通道图像
cv2.waitKey()
cv2.destroyAllWindows()
但是为什么得到的是灰度图像呢,因为执行的imshow函数时原图像三个通道的值都会被修改为相同的,对于BGR图像而言,只要三个通道值相等,那么得到的就是灰度图像
2:拆分一幅HSV图像中的通道
语法如下
h,s,v=cv2.split(hsv_image)
下面先把图像从BGR色彩空间转换到HSV色彩空间,再进行拆分
效果如下
二、合并通道
合并通道是拆分通道的逆过程
1:合并BGR通道图像
使用merge方法 语法如下
bgr=cv2.merge([b,g,r])
bgr为合并通道后得到的图像
代码运行效果即呈现拆分前的原图像
import cv2bgr_image = cv2.imread("5.1.jpg")
b, g, r = cv2.split(bgr_image) # 拆分图5.1中的通道
bgr = cv2.merge([b, g, r]) # 按B→G→R的顺序合并通道
cv2.imshow("BGR", bgr)
cv2.waitKey()
cv2.destroyAllWindows()
2:合并HSV通道图像
语法同上
首先将BGR色彩空间转换到HSV色彩空间,然后拆分得到的HSV图像中的通道,接着合并拆分后的通道图像,最后将合并通道后的图像从HSV色彩空间转换到BGR色彩空间
import cv2bgr_image = cv2.imread("D:/5.1.jpg")
# 把图5.1从BGR色彩空间转换到HSV色彩空间
hsv_image = cv2.cvtColor(bgr_image, cv2.COLOR_BGR2HSV)
h, s, v = cv2.split(hsv_image) # 拆分HSV图像中的通道
hsv = cv2.merge([h, s, v]) # 合并拆分后的通道图像
# 合并通道后的图像从HSV色彩空间转换到BGR色彩空间
bgr = cv2.cvtColor(hsv, cv2.COLOR_HSV2BGR)
cv2.imshow("BGR", bgr) # 显示BGR图像
cv2.waitKey()
cv2.destroyAllWindows()
3:综合运用拆分通道和合并通道
在HSV色彩空间内,如果保持其中两个通道的值不变,调整第三个通道的值,会得到相应的艺术效果
SV通道值不变,把H通道值调整为180 然后合并拆分在转换空间效果如下
import cv2bgr_image = cv2.imread("5.1.jpg")
cv2.imshow("5.1", bgr_image)
# 把图5.1从BGR色彩空间转换到HSV色彩空间
hsv_image = cv2.cvtColor(bgr_image, cv2.COLOR_BGR2HSV)
h, s, v = cv2.split(hsv_image) # 拆分HSV图像中的通道
h[:, :] = 180 # 将H通道的值调整为180
hsv = cv2.merge([h, s, v]) # 合并拆分后的通道图像
# 合并通道后的图像从HSV色彩空间转换到BGR色彩空间
new_Image = cv2.cvtColor(hsv, cv2.COLOR_HSV2BGR)
cv2.imshow("NEW",new_Image)
cv2.waitKey()
cv2.destroyAllWindows()
将HS通道值保持不变 把V通道值调整为255 效果如下
HV通道值保持不变 S通道值调整为255 效果如下
三、alpha通道
OpenCV在BGR色彩空间的基础上,又增加了一个用于设置图像透明度的A通道 即alpha通道,这样形成一个由BGR和A四个通道构成的色彩空间,A在0-255内取值,0表示透明,255表示不透明
下面我们把图像从BGR色彩空间转换到BGRA色彩空间,然后拆分通道,调整透明度,最后合并拆分后的图像并保存 效果如下
原图如下
透明度为172时如下
透明度为0时图像完全透明
代码如下
import cv2bgr_image = cv2.imread("5.1.jpg")
# 把图5.1从BGR色彩空间转换到BGRA色彩空间
bgra_image = cv2.cvtColor(bgr_image, cv2.COLOR_BGR2BGRA)
cv2.imshow("BGRA", bgr_image) # 显示BGRA图像
b, g, r, a = cv2.slit(bgra_image) # 拆分BGRA图像中的通道
a[:, :] = 172 # 将BGRA图像的透明度调整为172(半透明)
bgra_172 = cv2.merge([b, g, r, a]) # 合并拆分后并将透明度调整为172的通道图像
a[:, :] = 0 # 将BG图像的透明度调整为0(透明)
bgra_0 = cv2.merge([b, g, r, a]) # 合并拆分后并将透明度调整为0的通道图像
cv2.imwrite(r"C:\Deop\bgra_iamge.png",bgra_image)
cv2.imwrite(r"C:p\bgra_172.png",bgra_172)
cv2.imwrite(r"C:\Use
s\Administrator\Desktop\bgra_0.png",bgra_0)
cv2.imshow("A = 172", bgra_172) # 显示透明度为172的BGRA图像
cv2.imshow("A = 0", bgra_0) # 显示透明度为0的BGRA图像
cv2.waitKey()
cv2.destroyAllWindows()
创作不易 觉得有帮助请点赞关注收藏~~~
OpenCV中拆分通道、合并通道、alpha通道的讲解及实战演示(附python源码 超详细)相关推荐
- OpenCV检测眼睛、猫脸、行人、车牌实战(附Python源码)
需要源码和资源请点赞关注收藏后评论区留言私信~~~ OpenCV提供的级联分类器除了可以识别人脸之外,还可以识别其他一些具有明显特征的物体,如眼睛.行人等,下面介绍几个OpenCV自带的级联分类器的用 ...
- OpenCV中使用Eigenfaces人脸识别器识别人脸实战(附Python源码)
需要源码和图片请点赞关注收藏后评论区留言私信~~~ Opencv提供了三种人脸识别方法,分别是Eigenfaces,Fisherfaces,LBPH这三种放噶都是通过对比样本最终实现人脸识别,因为这三 ...
- 使用OpenCV进行人脸检测和戴墨镜特效实战(附Python源码)
需要源码和图片请点赞关注收藏后评论区留言私信~~~ 人脸识别是基于人的脸部特征信息进行身份识别的一种生物识别技术,也是计算机视觉重点发展的技术.机器学习算法诞生之后,计算机可以通过摄像头等输入设备自 ...
- OpenCV中LBPH人脸识别器识别人脸实战(附Python源码)
需要源码和图片请点赞关注收藏后评论区留言私信~~~ Local Binary Pattern Histofram简称LBPH,即局部二进制模式直方图,这是一种基于局部二进制模式算法,这种算法善于捕获局 ...
- OpenCV中Fisherfaces人脸识别器识别人脸实战(附Python源码)
需要源码和图片请点赞关注收藏后评论区留言私信~~~ Fisherfaces是由Ronald Fisher最早提出的,这也是它名字的又来,它基于LDA线性判别分析技术,该方法将人脸数据转换到另外一个空间 ...
- OpenCV技巧 | 常用格式图片保存为透明背景图片(附Python源码)-教你轻松制作Logo
导读 本文主要介绍使用OpenCV将常用格式图片保存为透明背景图片的方法与实现代码. 实现目标 本文的目标有如下两个: ① 将常见格式[jpg/png/bmp]白色背景图片转换保存为透明背景图片: ② ...
- Android Studio App开发之网络通信中使用POST方式调用HTTP接口实现应用更新功能(附源码 超详细必看)
运行有问题或需要源码请点赞关注收藏后评论区留言~~~ 一.POST方式调用HTTP接口 POST方式把接口地址与请求报文分开,允许使用自定义的报文格式,由此扩大了该方式的应用场景.POST请求与GET ...
- 【Android App】物联网中指南针、计步器、感光器、陀螺仪的讲解及实战演示(附源码 超详细必看)
需要源码请点赞关注收藏后评论区留言~~~ 一.指南针-磁场传感器 顾名思义,指南针只要找到朝南的方向就好了. 可是在App中并非使用一个方向传感器这么简单,事实上单独的方向传感器已经弃用,取而代之的是 ...
- 机器学习中常见的六种分类算法(附Python源码+数据集)
今天和大家学习一下机器学习中常见的六种分类算法,如K近邻.决策树.朴素贝叶斯.逻辑回归.支持向量机.随机森林 除了介绍这六种不同分类算法外,还附上对应的Python代码案例,并分析各自的优缺点. 01 ...
最新文章
- springData jpa update delete
- java 遍历file_JAVA File类(文件的遍历,创建,删除)
- Python:更改默认启动的python程序及其对应的安装包路径(更改pip的默认安装包的路径)图文教程之详细攻略
- 在Windows Vista中使用符号链接
- 中国市场新财富与新人群趋势
- linux 运行段错误,在linux下代码运行出现段错误,求大神
- 【干货】31篇关于深度学习必读论文汇总(附论文下载地址)
- 计算机网络实验传输文件,湖大计算机网络实验-tcp文件传输实验
- 33. 对包含指针的容器使用remove这一类算法时要特别小心
- Linux中使用Vim快速更换文档中Windows换行符为Linux平台
- [译]PEP 342--增强型生成器:协程
- 完全背包问题 c语言
- ubuntu下rabbitvcs安装后无右键菜单解决办法
- 【GD32F407】 读写内部flash函数
- python(模块)xlsxwriter
- Python3使用SMTP协议发送电子邮件
- UG NX 10 重新附着草图
- 使用matplotlib画3d平面风场_新篇章:12激光SLM金属3D打印机开卖,速度提升20倍,工业批量化生产新利器...
- 使用JavaCV实现海康rtsp转rtmp实现无插件web端直播(无需转码,低资源消耗)
- GAN的介绍和简单代码的实现
热门文章
- 技术领导力: 深度访谈《深入分布式缓存》
- 田中耕一:一个奇怪的诺贝尔奖获得者
- juju based openstack upgrade (by quqi99)
- 中国食品加工用酶市场趋势报告、技术动态创新及市场预测
- python程序中如何合理处理[WinError 5]拒绝访问的错误
- 湖北大学计算机系宿舍,武汉高校宿舍大揭底!原来还有宿舍这么坑爹...
- ios5.1.1越狱实践
- 教程:SurfaceRT生存指南-WinRT8.1越狱运行ARM的exe程序;
- APP通用异常测试场景
- 软考信息安全工程师学习笔记六(未完待续)