【OpenCV 例程300篇】209. HSV 颜色空间的彩色图像分割

这篇具有很好参考价值的文章主要介绍了【OpenCV 例程300篇】209. HSV 颜色空间的彩色图像分割。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

OpenCV 例程200篇 总目录


【youcans 的 OpenCV 例程300篇】209. HSV 颜色空间的彩色图像分割

5.1 HSV 颜色空间的彩色图像分割

HSV 模型是针对用户观感的一种颜色模型。

HSV 颜色空间的各通道分别表示色调(Hue)、饱和度(Saturation)和明度(Value),可以直观地表达色彩的明暗、色调及鲜艳程度。

HSV 颜色空间可以用一个圆锥空间模型来描述。圆锥的顶点处 V=0,H 和 S 无定义,代表黑色;圆锥的顶面中心处V=max,S=0,H 无定义,代表白色。

当 S=1, V=1 时,H 所代表的任何颜色被称为纯色;当 S=0 时,饱和度为 0,颜色最浅,最浅被描述为灰色,灰色的亮度由 V 决定,此时 H 无意义;当 V=0 时,颜色最暗,最暗被描述为黑色,此时 H 和 S 均无意义,无论如何取值均为黑色。

【OpenCV 例程300篇】209. HSV 颜色空间的彩色图像分割

色调是色彩的基本属性,表示不同的颜色 ,可以用于描述和识别某种颜色。例如,绿色在 HSV 空间中的范围是 H=35~77,而在 RGB 空间很难用表达式描述。因此常用 HSV 色彩空间进行某种颜色的识别和不同颜色的对比。

HSV 模型在对指定颜色分割时非常有效。用 H 和 S 分量表示颜色距离,颜色距离指代表两种颜色之间的数值差异。对于不同的彩色区域,混合 H 与 S 变量,划定阈值,就可以进行简单的分割。


函数原型

函数 inRange () 可以实现按颜色区域 [lowerb,upperb] 对图像进行二值分割 。

cv.inRange(src, lowerb, upperb[, dst]) → dst

函数 inRange() 检查数组元素是否在设定区间内,通常用于在 HSV 空间检查设定的颜色区域范围。如果图像的某个像素值在 [lowerb,upperb] 之间,则输出像素值置 255,否则置 0。

参数说明:

  • src:输入图像,nparray 数组,允许单通道或多通道图像
  • lowerb:下边界阈值,标量(src为单通道)或数组(src为多通道)
  • upperb:上边界阈值,标量(src为单通道)或数组(src为多通道)
  • dst:输出图像,单通道的二值图像,大小与 src 相同,深度为 CV_8U

注意事项:

  1. 输入图像可以是单通道的灰度图像,也可以是多通道的彩色图像。
  2. 不论输入图像是单通道还是多通道图像,输出图像都是单通道二值图像,相当于输入图像的黑白遮罩 mask。
  3. 输入图像是单通道的灰度图像时,lower、upper 为标量;输入图像是多通道的彩色图像时,lower, upper 为数组,数组长度与通道数相同,分别表示各通道的边界阈值。
  4. 输入图像为多通道时,仅当像素各通道的值都在 [lowerb(i),upperb(i)] 之间时输出才为 255:

KaTeX parse error: Undefined control sequence: \and at position 39: …I_0) \lt u_0] \̲a̲n̲d̲ ̲[l_1 \lt src(I_…


颜色阈值:

色调表示不同的颜色 ,各种颜色具有特定的色调值。

OpenCV 中 HSV 颜色空间的范围是:H [0,180],S [0,255],V [0,255]。

常用颜色的色调值范围,也即边界阈值,如下表所示。

【OpenCV 例程300篇】209. HSV 颜色空间的彩色图像分割


例程 14.17:HSI 颜色空间图像分割

    # 14.17 HSI 颜色空间图像分割
    # 在HSV空间对绿屏色彩区域进行阈值处理,生成遮罩进行抠图
    img = cv.imread("../images/lady983Green.png", flags=1)  # 读取彩色图像
    hsv = cv.cvtColor(img, cv.COLOR_BGR2HSV)  # 将图片转换到 HSV 色彩空间

    # 使用 cv.inrange 函数在 HSV 空间检查设定的颜色区域范围,转换为二值图像,生成遮罩
    lowerColor = np.array([35, 43, 46])  # (下限: 绿色33/43/46)
    upperColor = np.array([77, 255, 255])  # (上限: 绿色77/255/255)
    binary = cv.inRange(hsv, lowerColor, upperColor)  # 生成二值遮罩,指定背景颜色区域白色
    binaryInv = cv.bitwise_not(binary)  # 生成逆遮罩,前景区域白色开窗,背景区域黑色
    matting = cv.bitwise_and(img, img, mask=binaryInv)  # 生成抠图图像 (前景保留,背景黑色)

    # 将背景颜色更换为红色: 修改逆遮罩 (抠图以外区域黑色)
    imgReplace = img.copy()
    imgReplace[binaryInv==0] = [0,0,255]  # 黑色背景区域(0/0/0) 修改为红色 (BGR:0/0/255)

    plt.figure(figsize=(9, 6))
    plt.subplot(221),plt.title("origin"), plt.axis('off')
    plt.imshow(cv.cvtColor(img, cv.COLOR_BGR2RGB))
    plt.subplot(222), plt.title("binary mask"), plt.axis('off')
    plt.imshow(binary, cmap='gray')
    plt.subplot(223), plt.title("invert mask"), plt.axis('off')
    plt.imshow(binaryInv, cmap='gray')
    plt.subplot(224), plt.title("matting"), plt.axis('off')
    plt.imshow(cv.cvtColor(matting, cv.COLOR_BGR2RGB))
    plt.tight_layout()
    plt.show()

【OpenCV 例程300篇】209. HSV 颜色空间的彩色图像分割




【本节完】

版权声明:
参考文献: Use the Photoshop Levels adjustment (adobe.com)
youcans@xupt 原创作品,转载必须标注原文链接:(https://blog.csdn.net/youcans/article/details/125389684)
Copyright 2022 youcans, XUPT
Crated:2022-6-20
欢迎关注 『youcans 的 OpenCV 例程 200 篇』 系列,持续更新中
欢迎关注 『youcans 的 OpenCV学习课』 系列,持续更新中

201. 图像的颜色空间转换
202. 查表快速替换(cv.LUT)
203. 伪彩色图像处理
204. 图像的色彩风格滤镜
205. 调节色彩平衡/饱和度/明度
206. Photoshop 色阶调整算法
207. Photoshop 色阶自动调整算法
208. Photoshop 对比度自动调整算法
209. HSV 颜色空间的彩色图像分割文章来源地址https://www.toymoban.com/news/detail-442357.html

到了这里,关于【OpenCV 例程300篇】209. HSV 颜色空间的彩色图像分割的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【OpenCV 例程300篇】04. 用 matplotlib 显示图像(plt.imshow)

    专栏地址:『youcans 的 OpenCV 例程300篇 - 总目录』 01. 图像的读取(cv2.imread) 02. 图像的保存(cv2.imwrite) 03. 图像的显示(cv2.imshow) 04. 用 matplotlib 显示图像(plt.imshow) 函数 plt.imshow() 用于通过 matplotlib 库显示图像。 函数说明: matplotlib.pyplot.imshow(img[, cmap]) OpenCV 使用 BGR 格式

    2024年02月04日
    浏览(59)
  • RGB空间中的彩色图像分割原理及其python实现

    ⭐️ 为尊重原创性 !转载请注明出处:©️ Sylvan Ding’s Blog 本文论述了基于欧式距离和曼哈顿距离的彩色图像分割算法,并用python实现了各个算法。之后将二者的优势结合,提出了改进后的曼哈顿距离算法:基于 加权曼哈顿距离 的彩色图像分割算法,在分割效果和速度上超

    2023年04月22日
    浏览(46)
  • OpenCV(图像颜色空间变换)

    目录 1、分类 1.1 RGB颜色模型  1.2 HSV颜色模型 1.3 GRAY颜色模型 2、图像数据类型间的相互转换  3 、颜色转换函数 RGBHSVGRAY颜色模型。 1.1 RGB颜色模型  1.2 HSV颜色模型 1.3 GRAY颜色模型 第四个参数使用例子:有一图像通道数为5,只需要用到前3个通道,就可以设置通道数为3  使

    2024年02月12日
    浏览(50)
  • OpenCV(五):图像颜色空间转换

    目录 1.图像颜色空间介绍 RGB 颜色空间 2.HSV 颜色空间 3.RGBA 颜色空间 4.YUV 2.图像数据类型间的互相转换convertTo() 3.不同颜色空间互相转换cvtColor()  4.Android JNI demo 1.图像颜色空间介绍 RGB 颜色空间 RGB 颜色空间是最常见的颜色表示方式之一,其中 R、G、B 分别表示红色、绿色和蓝

    2024年02月10日
    浏览(50)
  • RGB、HSV、HSL和CMYK颜色空间

    目录 简介 RGB(红绿蓝)颜色空间 HSV(色调、饱和度、亮度)颜色空间 HSL(色调、饱和度、亮度)颜色空间 CMYK(青、品红、黄、黑)颜色空间 这四种颜色空间在不同的应用领域有不同的用途: RGB主要用于计算机图形学和显示设备中 ,可以通过调整红、绿、蓝三个分量的值

    2024年02月16日
    浏览(44)
  • [opencv]HSV常见颜色上下限值

    这里以python版本opencv演示如何查找颜色  效果 用鼠标确定 确定待检测目标的HSV值 文章来源:https://www.jb51.net/article/206173.htm

    2024年02月11日
    浏览(40)
  • Python-OpenCV中的图像处理-颜色空间转换

    在 OpenCV 中有超过 150 中进行颜色空间转换的方法。但是你以后就会 发现我们经常用到的也就两种: BGR G r a y 和 B G R Gray 和 BGR G r a y 和 BGR HSV。 注意:在 OpenCV 的 HSV 格式中, H(色彩/色度)的取值范围是 [0, 179],S(饱和度)的取值范围 [0, 255], V(亮度)的取值范围 [0,

    2024年02月13日
    浏览(43)
  • opencv+图像处理(Image Processing in OpenCV) 4-0改变颜色空间

    本专栏代码地址 https://github.com/xiawei20161308104/xv_opencv_tutorials 本节代码路径 xv_opencv_tutorials/ImageProcessinginOpenCV/changing_colorspaces.py 参考 图像工程第4版,张毓晋,清华大学出版社 颜色空间转化函数 cv.cvtColor() “Indeed rays,properly expressed,are not colored”——牛顿。 光线为不同频率的电

    2024年02月03日
    浏览(87)
  • 【OpenCV 例程 300篇】257.OpenCV 生成随机矩阵

    『youcans 的 OpenCV 例程300篇 - 总目录』 OpenCV 中提供了 cv.randn 和 cv.randu 函数生成随机数矩阵,也可以用于创建随机图像。 函数 cv.randn 生成的矩阵服从正态分布,函数 cv.randu 生成的矩阵服从均匀分布 函数说明: cv.randn(dst, mean, stddev[, ]) → dst,生成正态分布矩阵 cv.randu(dst, lo

    2023年04月24日
    浏览(54)
  • 【OpenCV 例程 300篇】251. 特征匹配之暴力匹配

    『youcans 的 OpenCV 例程300篇 - 总目录』 特征匹配是特征检测和特征描述的基本应用,在在图像拼接、目标识别、三维重建等领域的应用非常广泛。 基于特征描述符的特征点匹配是通过对两幅图像的特征点集合内的关键点描述符的相似性比对来实现的。分别对参考图像(Refere

    2024年02月02日
    浏览(43)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包