OpenCV for Python 学习第四天 :通道的获取与合并

上一篇博客,我们学习了如何通过更快的item()和itemset()的方法访问图片,以及了解了图像的兴趣位置的获取方法,那么今天,我们将学习通道的处理方法,通过通道的拆分和合并的实例,让大家更好的了解咱们有关于BGR通道的知识。

文章大纲

  • 通道获取
    • Split() 方法
    • 索引法
  • 更改通道
  • 通道合并
    • merge() 函数
  • 每日总结

通道获取

Split() 方法

在OpenCV中,可以使用split()方法将图像的不同通道拆分为单独的Mat对象。该方法接收一个原始图像的Mat对象并返回一个包含所有通道的向量,每个通道都保存为单独的Mat对象。以下是通道拆分的示例代码:

import cv2# 读取图像
img = cv2.imread("LFS.jpg")# 将图像的不同通道拆分为单独的Mat对象
B, G, R = cv2.split(img)# 显示单个通道的图像
cv2.imshow("Blue Channel", B)
cv2.imshow("Green Channel", G)
cv2.imshow("Red Channel", R)cv2.waitKey(0)
cv2.destroyAllWindows()

在这里插入图片描述

在上面的示例代码中,我们首先读取一张图像,然后使用split()方法将其拆分为Blue、Green和Red通道,并将每个通道分别保存为单独的Mat对象。接下来,我们显示每个通道的图像并等待用户按下任意按键以关闭窗口。

索引法

还有一个更加原始的方法就是像我们之前处理图片所用的索引法一样,来进行各个通道之间的分离。

import cv2# 读取图像
img = cv2.imread("COLOR_LFS.jpg")# 索引分离
B = img[:,:,0]
G = img[:,:,1]
R = img[:,:,2]# 显示单个通道的图像
cv2.imshow("Blue Channel", B)
cv2.imshow("Green Channel", G)
cv2.imshow("Red Channel", R)cv2.waitKey(0)
cv2.destroyAllWindows()

显示出来的结果和之前一样,都是分离了三个的界面哦~

在这里插入图片描述

更改通道

通道修改可用于根据不同通道之间的差异来分割图像或提取感兴趣的对象。例如,可以通过比较红色通道和绿色通道的差异来分割红色物体,或者通过计算梯度来提取边缘信息。

我们上手进行尝试。

我们仍然使用索引法,将绿色通道的数据复制到蓝色通道上去。

import cv2# 读取图像
img = cv2.imread("COLOR_LFS.jpg")
cv2.imshow("Origin Image", img)# 索引变换 蓝色通道改成绿色通道
img[:,:,0] = img[:,:,1]# 显示通道的图像
cv2.imshow("Change Image", img)cv2.waitKey(0)
cv2.destroyAllWindows()

我们可以看到,原本蓝色的天变成了绿色的天。
在这里插入图片描述

通道合并

merge() 函数

在OpenCV中,可以使用merge()方法将多个Mat对象合并为一个多通道的Mat对象。该方法接受一个包含多个单通道Mat对象的向量,并返回一个多通道的Mat对象。以下是merge()方法的示例代码:

import cv2# 读取图像
img = cv2.imread("COLOR_LFS.jpg")# 将图像的不同通道拆分为单独的Mat对象
B, G, R = cv2.split(img)# 合并单个通道的图像为多通道的图像
merged_img = cv2.merge([B, G, R])# 显示合并后的图像
cv2.imshow("Merged Image", merged_img)
print(merged_img)cv2.waitKey(0)
cv2.destroyAllWindows()

在上面的示例代码中,我们首先读取一张图像,然后使用split()方法将其拆分为Blue、Green和Red通道,并将每个通道分别保存为单独的Mat对象。接下来,我们使用merge()方法将这三个单通道的Mat对象合并为一个多通道的Mat对象。最后,我们显示合并后的图像并等待用户按下任意按键以关闭窗口。

在这里插入图片描述
那么以上是正常的组合,那加入我们用错误的组合方式会怎么样呢?

import cv2# 读取图像
img = cv2.imread("COLOR_LFS.jpg")# 将图像的不同通道拆分为单独的Mat对象
B, G, R = cv2.split(img)# 合并单个通道的图像为多通道的图像
correct_img = cv2.merge([B, G, R])
wrong_img_1 = cv2.merge([G,B,R])
wrong_img_2 = cv2.merge([R,G,B])# 显示合并后的图像
cv2.imshow("CORRECT Image", correct_img)
cv2.imshow("WRONG Image 1", wrong_img_1)
cv2.imshow("WRONG Image 2", wrong_img_2)cv2.waitKey(0)
cv2.destroyAllWindows()

我们可以很明显地看到,图片的颜色发生了变化

在这里插入图片描述

每日总结

今天我们学习了使用split()方法分离每一个通道,以及索引的[:,:,num]的方法分离。我们还学习了融合通道的merge[a,b,c]的方法。那么我们下一篇文章再见~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/2198.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

前端笔记_OAuth规则机制下实现个人站点接入qq三方登录

文章目录 ⭐前言⭐qq三方登录流程💖qq互联中心创建网页应用💖配置回调地址redirect_uri💖流程分析 ⭐思路分解⭐技术选型实现💖技术选型:💖实现 ⭐结束 ⭐前言 大家好,我是yma16,本…

JMeter做http接口功能测试

1. 普通的以key-value传参的get请求 e.g. 获取用户信息 添加http请求;填写服务器域名或IP;方法选GET;填写路径;添加参数;运行并查看结果。 2. 以Json串传参的post请求 e.g. 获取用户余额 添加http请求;…

设计模式-原型模式

目录 一、传统方式 二、原型模式 三、浅拷贝和深拷贝 克隆羊问题: 现在有一只羊tom,姓名为: tom,年龄为: 1,颜色为: 白色,请编写程序创建和tom羊属性完全相同的10只羊。 一、传统方式 public class Client {public static vo…

WMTS 地图切片Web服务 协议数据解析

1. WMTS 描述 WMTS(Web Map Tiles Service):地图切片Web服务。 2. 数据示例: arcgis online 导出的wmts xml: https://sampleserver6.arcgisonline.com/arcgis/rest/services/WorldTimeZones/MapServer/WMTS 内容解析: contents中可能包…

J2EEJSP自定义标签库01out标签if标签

目录 一.什么是标签 二.JSP自定义标签库 2.1 JSP标签库是什么 2.2 处理流程 2.3 如何自定义标签 2.4 标签类型 三.开发示例 3.1 out标签 1.创建助手类 2.编写tld(标签库的描述)文件,(必须放在WEB-INF目录或其目录下&a…

python爬虫-获取headers(报文头)关键参数实例小记

注意!!!!某XX网站逆向实例仅作为学习案例,禁止其他个人以及团体做谋利用途!!! 第一步:请求页面,得到响应。建议首次请求时headers内容都带着,调试…

react报错信息

报错信息 render函数里dom不能直接展示obj对象 取变量记得要有{} https://segmentfault.com/q/1010000009619339 这样在写的时候就已经执行方法了,所以此处用箭头函数()》{}才会在点击时执行或者 遍历数据使用map来遍历,使用forea…

Docker【安装与基本使用】

【1】Docker的安装 注意:如果之前安装过docker其他版本,请删除干净。 docker-01 10.0.0.51 2G docker-02 10.0.0.52 2G docker-01 [rootdocker-01 ~]# cp -rp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime cp: overwrite ‘/etc/localtime’? …

H3C-Cloud Lab实验-OSPF配置实验

一、实验拓扑图 实验需求: 1、按照图示配置 IP 地址 2、按照图示分区域配置 OSPF ,实现全网互通 3、为了路由结构稳定,要求路由器使用环回口作为 Router-id,ABR 的环回口宣告进骨干区域 4、掌握OSPF初始化流程、路由表学习的过…

el-progress组件使用,样式修改,自定义文字

正常的el-progress显示是这样的 修改后 自动计算percentage&#xff0c;format自定义显示文字 <template><div><div class"content-view"><div v-for"(item, index) in progressList" class"item-view"><el-prog…

解锁编程世界的魔法密码:探索算法的奥秘与应用

一个程序员一生中可能会邂逅各种各样的算法&#xff0c;但总有那么几种&#xff0c;是作为一个程序员一定会遇见且大概率需要掌握的算法。今天就来聊聊这些十分重要的“必抓&#xff01;”算法吧~* 一&#xff1a;引言 算法是解决问题和优化程序性能的核心&#xff0c;它是一…

你真的会用async和await么?

async函数搞懂 背景asyncawaitawait 知识点1await 知识点2await 知识点三await 知识点四await 知识点五 背景 背景就是遇到了一个比较烦人的模块&#xff0c;里面的涉及到了大量的async 和 awiat。发现大多人对这个语法糖一知半解&#xff0c;然后大量的滥用&#xff0c;整理一…

数据标注的类型有哪些?

构建像人类一样的AI或ML模型需要大量训练数据。要使模型做出决定并采取行动&#xff0c;就必须通过数据标注来训练模型&#xff0c;使其能够理解特定信息。 但是&#xff0c;什么是数据标注呢&#xff1f;数据标注是指对用于人工智能应用的数据进行分类和标注。我们必须针对特定…

Qt6 Qt Quick UI原型学习QML第二篇

Qt6 Qt Quick UI原型学习QML第二篇 界面效果QML语法语法讲解核心要素项目元素矩形元素文本元素图像元素MouseArea元素 界面效果 QML语法 import QtQuick 2.12 import QtQuick.Window 2.12Window {id: rootvisible: truewidth: 640height: 480title: qsTr("QML学习第二篇&…

用微服务架构推进企业数字化转型升级

随着数字化转型进入深水区&#xff0c;企业应用程序建设需求急剧增长且变化多端&#xff0c;软件架构经历了单体结构、垂直架构、SOA架构&#xff0c;发展到了现在的微服务架构。 单体架构目前应用较多&#xff0c;部署容易&#xff0c;但单体式应用内部包含了所有需要的服务&…

FPGA——点亮led灯

文章目录 一、实验环境二、实验任务三、实验过程3.1 编写verliog程序3.2 引脚配置 四、仿真4.1 仿真代码4.2仿真结果 五、实验结果六、总结 一、实验环境 quartus18.1 vscode Cyclone IV开发板 二、实验任务 每间隔1S实现led灯的亮灭&#xff0c;实现流水灯的效果。 三、实…

基于卡尔曼滤波进行四旋翼动力学建模(SimulinkMatlab)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

2.Docker镜像和容器操作

文章目录 Docker操作Docker镜像操作搜索镜像获取镜像镜像加速下载查看镜像详细信息为镜像添加标签删除镜像导出导入镜像上传镜像 Docker容器操作创建容器查看容器状态启动容器创建并启动容器进入容器停止容器删除容器复制容器文件到宿主机容器的导出导入 Docker操作 ###查看do…

vscode 端口转发实现端口映射,实现端口自由

用vscode连接server进行开发&#xff0c; 是非常方便的&#xff0c;但很多时候&#xff0c;server的端口开放的很有限&#xff0c;那么就可以利用vscode进行端口映射 举一个应用场景&#xff1a; 先通过A利用vscode 连接B&#xff0c;然后再vscode 的port窗口进行端口转发&…

SpringBoot中整合Sharding Sphere实现数据加解密/数据脱敏/数据库密文,查询明文

场景 为防止数据泄露&#xff0c;需要在插入等操作时将某表的字段在数据库中加密存储&#xff0c;在需要查询使用时明文显示。 Sharding Sphere ShardingSphere是一套开源的分布式数据库中间件解决方案组成的生态圈&#xff0c; 它由Sharding-JDBC、Sharding-Proxy和Shardi…