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

news2024/12/25 0:11:27

上一篇博客,我们学习了如何通过更快的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.coloradmin.cn/o/767199.html

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

相关文章

论文解读:LaMa:Resolution-robust Large Mask Inpainting with Fourier Convolutions

论文:https://arxiv.org/pdf/2109.07161.pdf 代码: GitHub - advimman/lama: 🦙 LaMa Image Inpainting, Resolution-robust Large Mask Inpainting with Fourier Convolutions, WACV 2022 目录 1 摘要: 2 主要贡献&#xff…

Bland-Altman LOA:衡量测量方法一致性的统计分析方法,也可用来做分割评价指标

Bland-Altman LOA(Limits of Agreement)是一种用于评估两种测量方法一致性的常用统计分析方法。 在医学研究和临床实践中,我们经常会面临不同测量方法之间的比较和评估问题。为了确定两种测量方法是否能够得出相似的结果,我们需要…

D. Accommodation

Problem - 1804D - Codeforces 思路:首先我们可以统计一下开着灯的个数,对于一个卧室的来说, 不会存在让灯减少的情况,而对于两个卧室的来说,存在4种情况,00,01,10,11&am…

hosts文件锁定,如何修改hosts文件权限

hosts文件能够让我们配置域名和IP的映射关系,方便局域网的用户,可是有的用户想在hosts里添加修改,发现host文件被锁死,host文件左下角出现一个🔒,怎么办呢,如何修改hosts文件权限。 应用程序-实…

【DevOps】Atlassian插件开发指南

本文以Bamboo插件开发为例,记录一下插件开发过程。 一、简介 Atlassian Bamboo 6.9.1 是一款持续集成和持续交付(CI/CD)工具,支持使用插件扩展其功能。如果需要开发自己的 Bamboo 插件并添加到 Bamboo 中,则可以参考…

OpenCv之图像形态学(二)

目录 一、形态学梯度 二、顶帽操作 三、黑帽操作 一、形态学梯度 梯度原图 - 腐蚀腐蚀之后原图边缘变小,原图 - 腐蚀 就可以得到腐蚀掉的部分,即边缘 案例代码如下: import cv2 import numpy as np# 导入图片 img cv2.imread(6.jpg)# 注意调节kern…

nginx基础2——配置文件详解(网页配置篇)

文章目录 一、基本了解二、nginx.conf配置参数2.1 调试参数2.2 必配参数2.3 优化性能参数2.4 event{}段配置参数2.5 网络连接参数2.6 fastcgi配置参数2.7 总结常配参数 三、http{}段配置参数3.1 配置结构3.2 精简配置网页3.3 location定义网页3.3.1 root path用法3.3.1 alias p…

atc201(组合数学)+cf1400(溢水法)

C - Secret Number 题意:给你一个字符串,分别表示0-9的状态。求一个四位密码的组合有多少种。 O:表示密码一定有该数字。 X:表示密码一定没有该数字。 ?:不确定密码里有没有,可能有可能没有&…

bgp联邦

1、ip配置 [r1-LoopBack0]ip address 192.168.1.1 24 [r1-LoopBack1]ip address 10.0.0.1 24 [r1-GigabitEthernet0/0/0]ip address 12.0.0.1 24[r2-GigabitEthernet0/0/0]ip address 12.0.0.2 24 [r2-GigabitEthernet0/0/1]ip address 172.16.1.1 29 [r2-GigabitEthernet0/0/…

js - 对forEach()函数的一些理解

1,定义和用法 定义: forEach() 方法用于调用数组的每个元素,并将元素传递给回调函数。注意: forEach() 对于空数组是不会执行回调函数的。 用法: // 箭头函数 forEach((element) > { /* … */ }) forEach((element, index) &…

RS485远传电表有哪些功能?

RS485远传电表是一种具有远程传输功能的电表,可以通过RS485接口进行数据传输。它主要用于远程测量电能消耗、监测电力质量和实时控制电力负载等方面。 RS485远传电表具有多种功能,如: 1.远程测量电能消耗:RS485远传电表可以通过远…

【Linux工具】编译器、调式器、项目自动化构建工具以及git的使用3(GDB调试器的基础使用)

【Linux工具】编译器、调式器、项目自动化构建工具以及git的使用3(GDB调试器的基础使用) 目录 【Linux工具】编译器、调式器、项目自动化构建工具以及git的使用3(GDB调试器的基础使用)背景gdb的一些指令gdb实际运用显示代码运行程…

spring boot +vue 读取excel数据代码生成器

项目介绍 最近在开发工程中,需要根据excel中的数据生成标签类,手写太费劲啦,还得一边写一边对,受不了啦 决定写一个解析工具,自动生成代码 项目架构 项目采用springboot vue的开发方式,但vue并不是分离项目…

day38-Mybatis映射

0目录 Mybatis映射 1.2.3 1. Mybatis映射 1.1 映射文件XXMapper.xml语法 1.2 namespace:命名空间 namespace 的命名必须跟某个接口同名 1.3 id:命名空间中的唯一标识符 接口中的方法与映射文件中的SQL语句id一一对应 1.4 parameterType&#xf…

尚硅谷大数据Flink1.17实战教程-笔记03【Flink运行时架构】

尚硅谷大数据技术-教程-学习路线-笔记汇总表【课程资料下载】视频地址:尚硅谷大数据Flink1.17实战教程从入门到精通_哔哩哔哩_bilibili 尚硅谷大数据Flink1.17实战教程-笔记01【Flink概述、Flink快速上手】尚硅谷大数据Flink1.17实战教程-笔记02【Flink部署】尚硅谷…

好用的Net反编译工具,界面和VS差不多,供大家学习研究参考

1、无需设置 由于它是一个便携式工具,它不需要您将其安装在目标计算机上,因为只需拆包其存档并启动可执行文件即可完全访问其功能。 您还可以从可移动存储介质(如USB闪存驱动器或外部HDD)运行它。此外,它不会修改系统中的注册表项&#xff0c…

学习记录——SpectFormer、DilateFormer、ShadowFormer

SpectFormer: Frequency and Attention is what you need in a Vision Transformer, arXiv2023 频域混合注意力SpectFormer 2023 论文:https://arxiv.org/abs/2304.06446 代码:https://badripatro.github.io/SpectFormers/ 摘要视觉变压器已经成功地应用…

【Spring——Spring的基础与创建】

目录 🍧1. 什么是 Spring ? 🫖1.1 容器 🍙1.2 IoC 🥽1.3 汽车类——传统写法 🍘1.4 汽车类——IoC 写法 🌭2. 配置 maven 国内源 🌮2.1 在设置中勾选文件 🍤2.2 在…

SpringCloud学习路线(4)—— Nacos注册中心

一、认识和安装Nacos (一)概念: Nacos是Alibaba的产品,现在是SpringCloud中的一个组件,相较于Eureka功能更加丰富。 (二)下载地址: https://github.com/alibaba/nacos/releases &am…

一文看懂《关于网络安全和信息化工作重要指示》

7月14日至15日,全国网络安全和信息化工作会议在京召开。《关于网络安全和信息化工作重要指示》也在会上得到解读与传达。 从近年来党的二十大等重大会议上网络安全和数据安全等相关话题多次被提及、我国陆续发布多部网络安全&数据安全相关政策法规等等&#xf…