使用颜色空间进行图像分割

本文介绍了如何使用OpenCV和Python中的颜色空间进行图像对象分割。通过对比RGB和HSV颜色空间,展示了在HSV空间中更容易对小丑鱼的橙色部分进行分割。文章提供了代码示例,包括颜色空间转换、图像分割和阈值处理,以实现简单的图像分割效果。

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

原文地址:https://realpython.com/python-opencv-color-spaces/

这可能是一个深度学习和大数据的时代,在这个时代,复杂的算法通过显示数百万幅图像来分析图像,但是颜色空间对于图像分析仍然非常有用。简单的方法仍然是强大的。

在本文中,您将学习如何使用OpenCV基于Python中的颜色从图像中简单地分割对象。OpenCV是一个流行的计算机视觉库,用c/c++编写,带有Python绑定,提供了操作颜色空间的简单方法。

虽然你不需要已经熟悉OpenCV或本文中使用的其他助手包,但我们假设你至少对Python中的编码有了基本的了解。

什么是颜色空间?

在最常见的颜色空间RGB(红、绿、蓝)中,颜色以其红、绿、蓝三种成分表示。在更专业的术语中,RGB将颜色描述为三个成分的元组。每个组件可以取0到255之间的值,其中元组(0,0,0)表示黑色,(255,255,255)表示白色。

RGB被认为是一个附加颜色空间,颜色可以想象为由大量的红色、蓝色和绿色光线照射到黑色背景上而产生,以下是RGB颜色的一些例子:
image_1cos2jf6jbr9dk67kv1cah19d79.png-22kB

RGB是五种主要颜色空间模型之一,每种模型都有许多分支。有这么多颜色空间,因为不同的颜色空间对于不同的目的是有用的。

在印刷领域,CMYK非常有用,因为它描述了从白色背景产生颜色所需的颜色组合。RGB中的0元组是黑色的,而CMYK中的0元组是白色的。我们的打印机包含青色、品红色、黄色和黑色墨盒。

在某些类型的医疗领域,装有染色组织样本的载玻片被扫描并保存为图像。它们可以在HED空间中进行分析,HED空间是应用于原始组织的染色类型——苏木精、曙红和DAB——饱和度的表示。

HSVHSL是色调、饱和度和亮度的描述,对于识别图像中的对比度特别有用。这些颜色空间经常用于软件和网页设计中的颜色选择工具。

实际上,颜色是一个连续的现象,意味着有无限多的颜色。然而,颜色空间通过离散结构(固定数量的整数数值)来表示颜色,这是可以接受的,因为人眼和感知也是有限的。颜色空间完全能够代表我们能够区分的所有颜色。

既然我们理解了颜色空间的概念,我们可以继续在OpenCV中使用它们。

使用颜色空间进行简单分割

为了演示颜色空间分割技术,我们在real-Python材料库中提供了一个尼莫鱼图像数据集,供您下载和玩耍。小丑鱼很容易被它们明亮的橙色识别,所以它们是好的分割候选。让我们看看在一张图片中找到尼莫鱼有多精确。

你需要遵循的关键Python包是NumPy—Python中最重要的科学计算包,matplolib—绘图库,当然还有OpenCV。

颜色空间和使用opencv读取图像

首先,你需要设置你的环境。本文将假设您的系统上安装了Python 3.x。请注意,虽然OpenCV的当前版本是3.x,但是要导入的包的名称仍然是cv2,通过pip3 install opencv-python命令进行安装(没有pip3,用pip也行)。

>>> import cv2

成功导入OpenCV后,您可以查看OpenCV提供的所有颜色空间转换,并将它们全部保存到变量中:

>>> flags = [i for i in dir(cv2) if i.startswith('COLOR_')]

根据您的OpenCV版本,标志的列表和数量可能略有不同,但是不管怎样,会有很多标志!查看您有多少个可用的标志:

>>> len(flags)
258
>>> flags[40]
'COLOR_BGR2RGB'

COLOR_后面的第一个字符表示原始颜色空间,2后面的字符表示目标颜色空间。此标志表示从BGR(蓝色、绿色、红色)到RGB的转换。正如你所看到的,这两个颜色空间非常相似,只有第一个和最后一个通道交换。

你需要matplotlib.pyplot来查看图像,需要NumPy来处理一些图像。如果尚未安装Matpl

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值