计算机视觉——Python OpenCV BGR转HSV

本文介绍了如何使用Python和OpenCV进行彩色图像从RGB/BGR到HSV的空间转换,并给出了实际应用示例,包括基本的色彩空间转换和物体检测,如找出图像中的绿色物体。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这里将介绍如何使用 OpenCV 与 Python 来作彩色影像转HSV(RGB to HSV 或 BGR to HSV),在写 Python 影像处理程序时常会用到 OpenCV cvtColor 作颜色空间转换的功能,接下来介绍怎么使用 Python 搭配 OpenCV 模块来进行 RGB/BGR 转 HSV 彩色转HSV空间。

HSV 简单介绍分别为:

色相(H):色彩的颜色名称,如红色、黄色等。

饱和度(S):色彩的纯度,越高色彩越纯,低则逐渐变灰,数值为0-100%。

明度(V):亮度,数值为0-100%。

示例. 彩色影像转HSV

以下示例程序是将 fruits.jpg 来作图片转HSV示范,将影像用 imread 读进来后,再使用 cvtColor 将影像从彩色转换成HSV。

使用 cv2.cvtColor 转换颜色空间时,第二个参数与HSV相关的有:

cv2.COLOR_BGR2HSV

cv2.COLOR_HSV2BGR

cv2.COLOR_RGB2HSV

cv2.COLOR_HSV2RGB

opencv 默认的排列方式为BGR,而不是RGB哦!

所以这边使用的是 cv2.COLOR_BGR2HSV

详细程序代码如下:

opencv-rgb-to-hsv.py

import cv2
image = cv2.imread('fruits.jpg')
hsv = cv2.cvtColor(image, cv2.COLOR_BGR2HSV)
cv2.imshow('Input', image)
cv2.imshow('Result', hsv)
cv2.waitKey(0)

结果如下图所示:
在这里插入图片描述
当然实际上使用时不会只是单纯RGB转换成HSV就结束了,通常会去针对HSV颜色区间去做后续的处理,请看下面的例子。

示例. 物体检测 - 找出绿色的物体

彩色转HSV常见的应用可能有物体检测,去背景处理(排除绿色的背景),

以下就来示范如何找出图中绿色的水果,类似的应用可能有找出草地的背景,

详细程序代码如下:

opencv-rgb-to-hsv2.py

import cv2
import numpy as np
image = cv2.imread('fruits.jpg')
hsv = cv2.cvtColor(image, cv2.COLOR_BGR2HSV)
lower_green = np.array([35, 43, 46])
upper_green = np.array([77, 255, 255])
mask = cv2.inRange(hsv, lower_green, upper_green)
res = cv2.bitwise_and(image, image, mask=mask)
cv2.imshow('Input', image)
cv2.imshow('Result', res)
cv2.waitKey(0)

结果如下图所示:
在这里插入图片描述

### 导入Excel数据MATLABMATLAB 中可以使用 `readtable` 或者 `xlsread` 函数来读取 Excel 文件中的数据。对于结构化表格数据推荐使用 `readtable` 函数,因为其返回的是表形式的数据容器,更适合处理表格型数据。 #### 使用 readtable 函数 此函数能够方便地将 Excel 表格文件转换成表格数组[^1]: ```matlab % 假设有一个名为 'data.xlsx' 的 Excel 文件位于当前工作目录下, % 并且想要加载第一个工作表的内容。 T = readtable('data.xlsx'); disp(T); ``` 如果需要指定特定的工作表或范围,则可以通过设置额外参数实现更精确控制[^2]: ```matlab opts = detectImportOptions('data.xlsx', 'Sheet', 2); % 加载第二个工作表 T = readtable('data.xlsx', opts); disp(T); % 或者只读取某一部分区域内的单元格 rangeStr = 'A1:D10'; % 定义要读取的矩形区域 T = readtable('data.xlsx', 'Range', rangeStr, 'ReadVariableNames', true); disp(T); ``` #### 使用 xlsread 函数 当只需要获取数值矩阵而不需要保持列名或其他元信息时可以选择 `xlsread` 函数[^3]: ```matlab [num, txt, raw] = xlsread('data.xlsx'); % num 是从 Excel 工作簿中提取出来的数值部分; % txt 包含所有文本字符串; % raw 则保存着原始未解析过的混合类型数据(即原样复制自电子表格) ``` 需要注意的是,在较新的版本里官方建议优先采用更为灵活强大的 `readtable` 和其他类似的高阶接口替代低级 I/O 操作如 `xlsread`.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

知来者逆

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值