在OpenCV + Python中使用色彩空间进行图像分割

在OpenCV + Python中使用色彩空间进行图像分割

什么是色彩空间/h5>

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

RGB被认为是三原色“加法”颜色空间,可以想象颜色是由大量红色,蓝色和绿色的光照射到黑色背景上产生的。

颜色 RGB值
红色 255,0,0
橙色 255,128,0
粉色 25,153,255

RGB是五个主要色彩空间模型之一,每个模型都有许多分支。颜色空间太多,因为不同的颜色空间可用于不同的目的。

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

HSV和HSL是色相,饱和度和亮度/亮度的描述,对识别图像的对比度特别有用。这些色彩空间常用于软件的选色工具和网页设计中。

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

OpenCV中的色彩空间和读取图像

首先,您需要设置您的环境。本文将假定您在系统上安装了Python3.x。请注意,尽管当前的OpenCV版本是3.x,但是要导入的软件包的名称仍然是cv2:

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

您将需要matplotlib.pyplot查看图像,并需要NumPy进行一些图像处理。如果您还没有Matplotlib或NumPy的安装,您将需要pip3 install matplotlib和pip3 install numpy进行安装:

在OpenCV + Python中使用色彩空间进行图像分割

结果:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5lXiJRfD-1580710370549)(C:Users67231DesktopImageSegmentationhsv.webp)]

结果:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-KAnED2NJ-1580710370549)(C:Users67231DesktopImageSegmentationoarnge.png)]

利用同样的方法选出白色的阈值

利用彩色图像进行图像分割

一旦获得合适的色彩范围,您就可以cv2.inRange()尝试设定Nemo阈值。inRange()接受三个参数:图像,较低范围和较高范围。它返回ndarray图像大小的二进制mask(1和0),其中的值1表示范围内的值,0值表示范围外的值。

import cv2import matplotlib.pyplot as pltimport numpy as npimg = cv2.imread('nemo.jpg')img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)hsv_img = cv2.cvtColor(img, cv2.COLOR_RGB2HSV)light_orange = (1,190,200)dark_orange = (18,255,255)light_white = (0,0,200)dark_white = (145,60,255)ora

来源:陨星落云

声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2020年1月2日
下一篇 2020年1月2日

相关推荐