opencv 基础学习08-图像通道操作

opencv 基础学习08-图像通道操作

    • 什么是图像通道?
    • 通道操作:
    • **1 通过索引拆分**
    • 2 通过opencv 函数拆分
    • 通道合并

什么是图像通道?

OpenCV的通道拆分功能可用于将多通道图像拆分成单独的通道,这在图像处理和计算机视觉任务中具有许多应用场景。以下是一些通道拆分的常见应用场景:

图像处理:在某些图像处理任务中,需要对图像的不同通道进行独立处理。例如,可以对彩色图像的RGB通道进行分别处理,如对每个通道进行直方图均衡化、对比度调整、颜色平衡等操作。

物体检测:在某些物体检测任务中,通过分析不同通道的信息可以帮助提高检测准确性。例如,在红外图像中,热点和冷点可能分别对应于不同的物体或区域。通过拆分红外图像的通道,可以分别分析不同的温度通道,从而提取更具区分度的特征。

背景建模:在背景建模中,可以使用通道拆分来分析不同通道的背景信息。例如,可以对RGB图像的各个通道进行拆分,并针对每个通道建模,以便更好地分离前景目标和背景。

颜色空间转换:通道拆分也可以用于颜色空间转换。例如,将RGB图像拆分成HSV(色调、饱和度、亮度)通道,然后可以对亮度通道进行调整或应用其他颜色空间转换算法。

图像融合:在某些情况下,需要将不同通道的图像进行融合。通过通道拆分,可以将多个单通道图像进行合并,以生成具有所需特性的合成图像。
疑问:
一张图片最多有多个少通道?最少可以有几个通道?
最常见的图像类型是RGB图像,它由红色(R)、绿色(G)和蓝色(B)三个通道组成,因此是一个三通道图像。在这种情况下,每个像素的颜色由这三个通道的强度组合而成。

除了RGB图像之外,还有其他常见的多通道图像类型。例如,RGBA图像包含红色(R)、绿色(G)、蓝色(B)和透明度(A)四个通道,透明度通道用于控制像素的不透明度。

另一方面,灰度图像是一种单通道图像,每个像素只有一个强度值,表示图像中的亮度。在灰度图像中,像素的亮度通常使用0到255之间的灰度级别表示。

总之,一张图像可以有多个通道,最常见的是RGB图像(三通道),也可以是其他类型的多通道图像。而最少的情况下,一张图像至少有一个通道,即灰度图像(单通道)。

通道操作:

在 RGB 图像中,图像是由 R 通道、G 通道、B 通道三个通道构成的。需要注意的是,在
OpenCV 中,通道是按照 B 通道→G 通道→R 通道的顺序存储的。
在图像处理过程中,可以根据需要对通道进行拆分和合并。本节就来介绍如何对通道进行拆分合并

通道拆分

针对 RGB 图像,可以分别拆分出其 R 通道、G 通道、B 通道。在 OpenCV 中,既可以通过索引的方式拆分通道,也可以通过函数的方式拆分通道

1 通过索引拆分

通过索引的方式,可以直接将各个通道从图像内提取出来。例如,针对 OpenCV 内的 BGR
图像 img,如下语句分别从中提取了 B 通道、G 通道、R 通道

b = img[ : , : , 0 ]
g = img[ : , : , 1 ]
r = img[ : , : , 2 ]

原图
在这里插入图片描述
对原图进行通道拆分,代码如下

import cv2lena=cv2.imread("lena.png",cv2.IMREAD_COLOR,)
cv2.imshow("lena1",lena)
b=lena[:,:,0]
g=lena[:,:,1]
r=lena[:,:,2]cv2.imshow('b', b)
cv2.imshow('g', g)
cv2.imshow('r', r)cv2.waitKey(0)
cv2.destroyAllWindows()

运行效果如下图:

在这里插入图片描述

2 通过opencv 函数拆分

函数 cv2.split()能够拆分图像的通道。例如,可以使用如下语句拆分彩色 BGR 图像 img,
得到 B 通道图像 b、G 通道图像 g 和 R 通道图像 r。

b,g,r=cv2.split(img)
上述语句与如下语句是等价的:
b=cv2.split(a)[0]
g=cv2.split(a)[1]
r=cv2.split(a)[2]

将上面代码替换后源码如下:

import cv2
import numpy as nplena=cv2.imread("lena.png",cv2.IMREAD_COLOR,)
cv2.imshow("lena1",lena)b,g,r=cv2.split(lena)
cv2.imshow('b', b)
cv2.imshow('g', g)
cv2.imshow('r', r)cv2.waitKey(0)
cv2.destroyAllWindows()

运行后发现效果跟上面是一样的。

在这里插入图片描述

通道合并

通道合并是通道拆分的逆过程,通过合并通道可以将三个通道的灰度图像构成一幅彩色图
像。函数 cv2.merge()可以实现图像通道的合并,例如有 B 通道图像 b、G 通道图像 g 和 R 通道
图像 r,使用函数 cv2.merge()可以将这三个通道合并为一幅 BGR 的三通道彩色图像。其实现的
语句为:
bgr=cv2.merge([b,g,r])

演示使用函数 cv2.merge()合并通道,代码如下

import cv2
import numpy as nplena=cv2.imread("lena.png",cv2.IMREAD_COLOR,)#b,g,r=cv2.split(lena)对图像 lena 进行拆分,得到 b、g、r 这三个通道
b,g,r=cv2.split(lena)
#cv2.merge([b,g,r])对图像 lena 进行合并,合并后的图像与原图像完全一致
bgr=cv2.merge([b,g,r])
#对通道 r、g、b 进行合并,合并顺序为 R 通道→G 通道→B通道,得到图像 rgb。
rgb=cv2.merge([r,g,b])cv2.imshow("lena",lena)
cv2.imshow("bgr",bgr)
cv2.imshow("rgb",rgb)cv2.waitKey(0)
cv2.destroyAllWindows()

运行效果如下
在这里插入图片描述
从结果中看出不同顺序的通道合并,图片的效果也会不一样

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

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

相关文章

你的隐私被泄漏了吗

近日,某高校毕业生在校期间窃取学校内网数据,收集全校学生个人隐私信息的新闻引发了人们对互联网生活中个人信息安全问题的再度关注。在大数据时代,算法分发带来了隐私侵犯,在享受消费生活等便捷权利的同时,似乎又有不…

【Vue3】setup参数细讲!computed计算属性和watch监听属性

setup参数细讲!computed计算属性和watch监听属性 setup细讲!setup参数,steup(props,context)参数1.props,负责接收父组件传过来的值参数2.contextcontext.attrscontext.emitcontext.slots, 插槽…

.Net Core Restful Api 版本区分第一种

前言:在我们进行Web Api开发时,版本的区分,是必须要考虑的,涉及到我们的版本发布,切换等,如何从旧版本无缝的切换到新版本? 下面,我们通过使用[ApiVersion]特性,实现两个…

Spring MVC 系列1 -- 初识Spring MVC

目录 1. 什么是 Spring MVC? 2. MVC定义 3. 创建SpringMVC项目 ​4. Spring MVC要学习哪些? 1. 什么是 Spring MVC? 官⽅对于 Spring MVC 的描述是这样的: 翻译成中文 从上述定义我们可以得出两个关键信息: 1. Spring MVC 是…

conda疑难杂症

annaconda、miniconda和conda的关系 conda官网 https://docs.conda.io/projects/conda/en/latest/ 下载安装Anaconda: https://www.anaconda.com/products/distribution#Downloads 下载安装Miniconda:https://docs.conda.io/en/latest/miniconda.html 安装 安装…

7月6日华为云盘古气象大模型登上《Nature》杂志:相比传统数值预报快10000倍

7月6日,国际顶级学术期刊《自然》(Nature)杂志正刊发表了华为云盘古大模型研发团队的最新研究成果——《三维神经网络用于精准中期全球天气预报》(《Accurate medium-range global weather forecasting with 3D neural networks》…

C/C++实现高并发http服务器

http高并发服务器实现 基础知识 html,全称为html markup language,超文本标记语言。 http,全称hyper text transfer protocol,超文本传输协议。用于从万维网(WWW:World Wide Web)服务器传输超…

win10远程桌面控制Ubuntu服务器 - 内网穿透实现公网远程

文章目录 前言视频教程1. ubuntu安装XRDP2.局域网测试连接3. Ubuntu安装cpolar内网穿透4.cpolar公网地址测试访问5.固定域名公网地址 转载自cpolar极点云文章:树莓派使用Nginx 搭建轻量级网站远程访问 前言 XRDP是一种开源工具,它允许用户通过Windows R…

【已解决】Flask项目报错TypeError: tuple indices must be integers or slices, not str

文章目录 问题情境报错及分析报错代码分析 解决方案必要的解决方法可能有用的解决方法 问题情境 本解决方案适用情境:在本地可以正常运行的flask项目,放到云服务器报错TypeError: tuple indices must be integers or slices, not str,即代码…

Tomcat之配置文件详解

Tomcat 目录 安装好 Tomcat 后,打开它的文件夹,可以看到以下目录 bin:存放各种启动、关闭和其它程序的脚本 conf:配置文件及相关数据文件存放的目录 lib:Tomcat 使用的库文件存放的目录,如存放 Servlet 规范的 API logs:默认日志文件存放…

《生活教育》期刊简介及投稿邮箱

《生活教育》期刊简介及投稿邮箱 《生活教育》杂志创办于1934,是中华人民共和国教育部主管的国家重点学术期刊,国家级期刊,中国知网全文收录G4期刊,它的理论是陶行知教育思想的主线和重要基石,陶行知的教育理论&#…

基于单片机的老人防摔倒的设计与实现

功能介绍 以51单片机作为主控系统;通过LCD1602液晶显示屏显示当前的经纬度及时间的信息;温度传感器采集当前体温;通过GPS接收模块获得当前位置的位置的经度、纬度、时间和高度等信息;通过ADXL345检测老人摔倒的一瞬间重力加速度通…

面试题更新之-vue2x监听方面有什么缺点?所以才有了vue3.0

文章目录 vue2x监听vue3.0监听vue2x监听方面有什么缺点?所以才有了vue3.0 vue2x监听 在Vue.js 2.x中,你可以通过监听属性来响应数据的变化。以下是几种常见的监听方式: 监听计算属性:你可以使用computed属性来创建一个计算属性&…

排序算法第二辑——选择排序

一,选择排序 选择排序算是简单排序中的渣渣,这种算法基本上是没有什么用处的。但是作为一个初学者,我又必须要会写这种算法。这种算法的实现实现思想和它的名字一样,就是在一个范围内选择最大或者最小的数据然后再交换数据实现排序…

Maynor的博客专家成长之路——暨2023年中复盘

文章目录 博客专家成长之路——暨2023年中复盘前言念念不忘的博客专家每天只做三件事敲代码写博客健健身 我的感悟 不足之处未来:和CSDN共同成长最后 博客专家成长之路——暨2023年中复盘 前言 ​ 2023年不知不觉已经过去了半年有余,也是时候作年中复盘…

10.25UEC++/小试牛刀(笨鸟先飞案例)

1.思路整理: 如何入手? 角色可能是每个游戏的最重要的部分,所以一般可以先从角色入手,如果游戏很复杂,可以进行拆分设计。 蓝图创建地图: 创建默认Pawn: 编写GameMode默认构造函数:…

Springboot整合Activiti详解

文章目录 版本依赖配置文件需要注意的问题画流程图activiti服务类进行编写流程部署流程定义启动流程流程实例 测试流程启动流程完成任务受理任务 版本依赖 开发工具 IDEASpringBoot 2.4.5(这里我试过SpringBoot 3.1.1版本,Activiti没有启动,…

Nginx-负载均衡

文章目录 nginx 负载均衡负载均衡策略(方法、算法)nginx配置round-robin加权轮询least-connectedip-hasp使用Https realip后端real server不使用realip模块后端real server使用realip模块 ab压力测试不同负载四层负载 7层负载4层和7层 nginx 负载均衡 负…

银河麒麟系统无法进入桌面拷贝备份文件

最近使用VMWare搭建银河麒麟系统升级后,无法进入桌面,而是进入tty1界面 这个时候如何想导出里面的文件就可以用文件共享的方式右键到虚拟机设置-选项,如图所示 选择一个共享目录 如d盘vm目录 登录tty1账号密码 ls列出文件 如图进行文件拷贝…

如何优雅的将 Docker 镜像从 1.43G 瘦身到 22.4MB

Docker 镜像的大小对于系统的 CI/CD 等都有影响,尤其是云部署场景。我们在生产实践中都会做瘦身的操作,尽最大的可能使用 Size 小的镜像完成功能。下文是一个简单的 ReactJS 程序上线的瘦身体验,希望可以帮助大家找到镜像瘦身的方向和灵感。 …