python学opencv读取图像(十四)BGR图像和HSV图像通道拆分

devtools/2024/12/29 14:00:56/

【1】引言

前序已经对BGR图像和HSV图像的转换进行了基本讨论,相关文章链接为:

pythonopencv|读取图像(十二)BGR图像转HSV图像-CSDN博客

pythonopencv|读取图像(十三)BGR图像和HSV图像互相转换深入-CSDN博客

在前序学习进程中,我们也了解BGR彩色图像 存在三个通道来管理三种基色的组成比例,此外HSV图像也存在三个参数来管理图像亮度饱和度等。相关文章链接有:

pythonopencv|读取图像(六)读取图像像素RGB值_opencv读取灰度图-CSDN博客

在此基础上,我们尝试抓取各个通道的具体数值

带着这个目标,我们开启本次学习。

【2】官网教程

要想抓取各个通道的具体数值,需要使用split()函数,点击下述链接,可以直达官网教程:

OpenCV: Channel split

未进行实际测试,我们开始编辑代码。

【3】代码测试

【3.1】读取图像

首先是完成图片的读取,可写入的基础代码为:

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.imwrite('cv-ini-000-save.png',bgr_image) #保存图片cv.waitKey() #不会自动关闭图像cv.destroyAllWindows() #释放所有窗口
else:print("There is no any photo")

在这里,使用的原始图像cv-ini.png为:

图1 cv-ini.png

【3.2】BGR拆分

然后先进行BGR拆分以读取数据,可以直接新增下述代码:

b,g,r=cv.split(bgr_image) #bgr拆分
cv.imshow(‘B’,b) #显示B通道
cv.imshow(‘G’,g) #显示G通道
cv.imshow(‘R’,r) #显示R通道

cv.imwrite(‘cv-ini-000-save-b.png’,b) #保存B通道图片
cv.imwrite(‘cv-ini-000-save-g.png’,g) #保存G通道图片
cv.imwrite(‘cv-ini-000-save-r.png’,r) #保存R通道图片

运行后,获得BGR通道的照片为:

图2 B通道图像

图3 G通道图像

图4 R通道图像

【3.3】HSV拆分

然后先进行HSV拆分,可以直接新增下述代码。

代码包括两大模块:第一模块将BGR图像转化为HSV图像,第二模块才是对HSV图像进行通道拆分以进行数据读取。

    # BGR转HSVhsv_image=cv.cvtColor(bgr_image,cv.COLOR_BGR2HSV) #BGR转HSVcv.imshow('cv-ini-000-hsv',hsv_image) #在屏幕上展示图片cv.imwrite('cv-ini-000-save-hsv.png',hsv_image) #保存图片# HSV拆分h,s,v=cv.split(hsv_image) #HSV拆分cv.imshow('H',h) #显示H通道cv.imshow('S',s) #显示S通道cv.imshow('V',v) #显示V通道# 保存cv.imwrite('cv-ini-000-save-h.png',h) #保存H通道图片cv.imwrite('cv-ini-000-save-s.png',s) #保存S通道图片cv.imwrite('cv-ini-000-save-v.png',v) #保存V通道图片

运行代码后,获得的HSV格式图像为:

图5 HSV格式图像

获得的H、S和V通道照片为:

图6 H通道图像

图7 S通道图像

图8 V通道图像

【4】总结

掌握了BGR和HSV图像各通道数据抓取函数cv2.split()的基本使用方法。


http://www.ppmy.cn/devtools/145315.html

相关文章

帧缓存的分配

帧缓存实际上就是一块内存。在 Android 系统中分配与回收帧缓存,使用的是一个叫 ION 的内核模块,App 使用 ioctl 系统调用后,会在内核内存中分配一块符合要求的内存,用户态会拿到一个 fd(有的地方也称之为 handle&…

Hive SQL 之 `LATERAL VIEW EXPLODE` 的正确打开方式

一文彻底搞懂 LATERAL VIEW EXPLODE 1. 引言 在处理复杂数据结构(如数组、映射)时,Hive SQL 提供了强大的功能来简化查询和数据分析。其中,LATERAL VIEW 和 EXPLODE 是两个特别有用的关键字,它们可以帮助我们将复杂的…

建筑工地AI安全检测系统:YOLO11数据标注训练与PyQt5界面设计应用开发

“随着建筑行业的快速发展,工地的安全监管显得尤为重要。传统的人工监管方式效率低、成本高,难以及时发现潜在的安全隐患。为了解决这一问题,本项目基于YOLOv11目标检测算法,利用2800多张建筑工地影像数据及其标注数据&#xff0c…

C#Directory类文件夹基本操作大全

1、判断文件夹是否存在 //Directory类的Exists方法 bool a1 Directory.Exists("C:\\Program Files"); Console.WriteLine(a1); //DirectoryInfo类的Exists属性 DirectoryInfo a2 new DirectoryInfo("C:\\Program Files"); if(a2.Exists) { Console.Writ…

《Django 5 By Example》读后感

一、 为什么选择这本书? 本人的工作方向为Python Web方向,想了解下今年该方向有哪些新书出版,遂上packt出版社网站上看了看,发现这本书出版时间比较新(2024年9月),那就它了。 从2024年11月11日至2024年12月18日期间&…

使用React构建一个掷骰子的小游戏

这是一个用 React 构建的小游戏应用,名为 Tenzies,目标是掷骰子,直到所有骰子的值相同。玩家可以“冻结”某些骰子,使它们在后续掷骰中保持不变。 1. App.jsx import Die from "../public/components/Die" import { us…

使用Excel制作通达信自定义外部数据,安排!!!

Excel相信大家电脑上都有这个工具,相比敲编程代码,用这个去做自定义数据对大多数人,应该是比较友好的。自定义数据分为外部序列数据,看了一下内容理解起来比较多,分两期给大家介绍。为了照顾电脑基础薄弱的朋友&#x…

直面水上突发,救生圈冲锋在前|鼎跃安全

在全球范围内,溺水是导致意外死亡的主要原因之一,尤其是在水上活动频繁的地区。快速响应的水域救援设备和措施,是拯救生命的关键环节。救生圈因其轻便、易用、效果显著,成为最常见、最基本的救援设备之一。 救生圈是一种浮力辅助设…