iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >Python OpenCV基于HSV的颜色分割如何实现
  • 498
分享到

Python OpenCV基于HSV的颜色分割如何实现

2023-07-02 00:07:41 498人浏览 泡泡鱼

Python 官方文档:入门教程 => 点击学习

摘要

本文小编为大家详细介绍“python OpenCV基于HSV的颜色分割如何实现”,内容详细,步骤清晰,细节处理妥当,希望这篇“Python OpenCV基于HSV的颜色分割如何实现”文章能帮助大家解决疑惑,下面跟着小编的

本文小编为大家详细介绍“python OpenCV基于HSV的颜色分割如何实现”,内容详细,步骤清晰,细节处理妥当,希望这篇“Python OpenCV基于HSV的颜色分割如何实现”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。

    1、什么是HSV

    我们知道RGB颜色模式,通过不同的配比可以形成不同的颜色。HSV也是一种颜色模式,其模型如图所示

    Python OpenCV基于HSV的颜色分割如何实现

    通过图示我们也能够看到,他和RGB颜色模型相似,也是由三个属性决定颜色,H、S、V分别是色彩、深度、明暗,按着图中方向的变化,其对应的颜色也会改变,三者也同样是有取值范围的:

    • H(色调):用角度度量,取值范围为0°~360°

    • S(饱和度):表示颜色接近光谱色的程度。通常取值范围为0%~100%,值越大,颜色越饱和。

    • V(明度):表示颜色明亮的程度,对于光源色,明度值与发光体的光亮度有关;对于物体色,此值和物体的透射比或反射比有关。通常取值范围为0%(黑)到100%(白)。

    HSV空间中三个指标相互独立,能够非常直观的表达色彩的明暗,色调,以及鲜艳程度,方便进行颜色之间的对比,所以经常在HSV中进行颜色的分割识别。在HSV中各个颜色的范围见下表

    Python OpenCV基于HSV的颜色分割如何实现

    2、代码实战

    从网上下载了一张交通信号灯的图片

    我们的目的是进行颜色分割,将我们感兴趣的区域提取出来以方便下一步的操作。

    2.1 createTrackbar使用方法及步骤

    在开始实际操作之前,来了解一下createTrackbar。createTrackbar是Opencv中的api,其可在显示图像的窗口中快速创建一个滑动控件,用于手动调节阈值,具有非常直观的效果。可以直接观察阈值选择的效果,并确定想要的阈值。

    使用Trackbar我们要了解两个函数;

    (1)创建滑动条函数
     

    一个滑动条只能用于一个参数,如果需要改变多个参数,可以使用多个滑动条

    cv2.createTrackbar(trackbarName, windowName, value, count, onChange)

    各参数意义:
     

    trackbarName:滑动空间的名称;
     

    windowName:滑动空间用于依附的图像窗口的名称;
     

    value:初始化阈值;
     

    count:滑动控件的刻度范围;最小值默认为0。
     

    onChange:回调函数(所谓回调函数即每次修改滑动条后,需要传入新变量的函数)的名称,其定义如下:

    onchange:void foo(int,void*)。

    其中第一个参数是滑动条位置,第二个参数是用户数据(请参见下一个参数)。如果回调是空指针,则不调用回调,但只更新值

    用户数据:按原样传递给回调的用户数据。它可以用来处理滑动条事件而不使用全局变量。

    (2)获取滑动条的值函数

    cv.getTrackbarPos获取滑动条位置处的值

    g = cv2.getTrackbarPos(trackbarName2, windowName)#第一个参数为滑动条1的名称,第二个参数为窗口的名称。

    注意:需要在回调函数内部采用函数cv.getTrackbarPos获取滑动条位置处的值,不然如果存在多个滑动条时,函数无法获取更新后的参数值

    2.2 代码详解

    import cv2# 滑动条的回调函数,获取滑动条位置处的值def empty(a):    h_min = cv2.getTrackbarPos("Hue Min","TrackBars")    h_max = cv2.getTrackbarPos("Hue Max", "TrackBars")    s_min = cv2.getTrackbarPos("Sat Min", "TrackBars")    s_max = cv2.getTrackbarPos("Sat Max", "TrackBars")    v_min = cv2.getTrackbarPos("Val Min", "TrackBars")    v_max = cv2.getTrackbarPos("Val Max", "TrackBars")    print(h_min, h_max, s_min, s_max, v_min, v_max)    return h_min, h_max, s_min, s_max, v_min, v_maxpath = 'Resources/11.jpg'# 创建一个窗口,放置6个滑动条cv2.namedWindow("TrackBars")cv2.resizeWindow("TrackBars",640,240)cv2.createTrackbar("Hue Min","TrackBars",0,179,empty)cv2.createTrackbar("Hue Max","TrackBars",19,179,empty)cv2.createTrackbar("Sat Min","TrackBars",110,255,empty)cv2.createTrackbar("Sat Max","TrackBars",240,255,empty)cv2.createTrackbar("Val Min","TrackBars",153,255,empty)cv2.createTrackbar("Val Max","TrackBars",255,255,empty)while True:    img = cv2.imread(path)    imgHSV = cv2.cvtColor(img,cv2.COLOR_BGR2HSV)    # 调用回调函数,获取滑动条的值    h_min,h_max,s_min,s_max,v_min,v_max = empty(0)    lower = np.array([h_min,s_min,v_min])    upper = np.array([h_max,s_max,v_max])    # 获得指定颜色范围内的掩码    mask = cv2.inRange(imgHSV,lower,upper)    # 对原图图像进行按位与的操作,掩码区域保留    imgResult = cv2.bitwise_and(img,img,mask=mask)       cv2.imshow("Mask", mask)    cv2.imshow("Result", imgResult)        cv2.waiTKEy(1)

    Python OpenCV基于HSV的颜色分割如何实现

    Python OpenCV基于HSV的颜色分割如何实现

    Python OpenCV基于HSV的颜色分割如何实现


    其实在交通信号灯检测中,我们只需要获得掩码(mask图像)就可以进行识别了。

    读到这里,这篇“Python OpenCV基于HSV的颜色分割如何实现”文章已经介绍完毕,想要掌握这篇文章的知识点还需要大家自己动手实践使用过才能领会,如果想了解更多相关内容的文章,欢迎关注编程网Python频道。

    --结束END--

    本文标题: Python OpenCV基于HSV的颜色分割如何实现

    本文链接: https://www.lsjlt.com/news/338645.html(转载时请注明来源链接)

    有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

    本篇文章演示代码以及资料文档资料下载

    下载Word文档到电脑,方便收藏和打印~

    下载Word文档
    猜你喜欢
    • Python OpenCV基于HSV的颜色分割如何实现
      本文小编为大家详细介绍“Python OpenCV基于HSV的颜色分割如何实现”,内容详细,步骤清晰,细节处理妥当,希望这篇“Python OpenCV基于HSV的颜色分割如何实现”文章能帮助大家解决疑惑,下面跟着小编的...
      99+
      2023-07-02
    • Python OpenCV基于HSV的颜色分割实现示例
      目录前言1、什么是HSV2、代码实战2.1 createTrackbar使用方法及步骤2.2 代码详解3、总结前言 一周没有更新博客了,这一周的时间内加强了对机器学习和图像处理的学习...
      99+
      2022-11-11
    • Python+OpenCV如何实现基于颜色的目标识别
      这篇文章给大家介绍Python+OpenCV如何实现基于颜色的目标识别,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。任务让摄像头识别到视野范围内的气球并返回每个气球的中心点坐标。因为场地固定,背景单一,所以省下来很多操...
      99+
      2023-06-22
    • Python+OpenCV实现基于颜色的目标识别
      目录任务主要代码效果展示学习了一点opencv的知识于是找了个小项目来实践一下。这里先说明一下,我的实现方法不见得是最好的(因为这只是一个用于练习的项目)仅作参考,也欢迎各位大佬指正...
      99+
      2022-11-12
    • 基于opencv实现视频中的颜色识别功能
      目录颜色识别的原理opencv中的颜色模型颜色识别的实现(c++)颜色识别的原理 opencv中的颜色模型 RGB RGB具有三个通道其,分别表示红色通道®,绿色通道(G),...
      99+
      2022-11-13
    • python 图像处理——图像分割及经典案例篇之基于颜色的图像分割
      前言 作者在第一部分向大家介绍了图像处理的基础知识,第二部分介绍了图像运算和图像增强,接下来第三部分我们将详细讲解图像分割及图像处理经典案例,该部分属于高阶图像处理知识,能进一步加深我们的理解和实践能...
      99+
      2023-09-04
      图像处理 python 计算机视觉
    • 基于OpenCV(python)的实现文本分割之垂直投影法
      在我的上一篇博客中讲述了水平投影法取出文本行图像的实现,在这里将用垂直投影法对文本行的每个字符进行分割。下图是用水平投影法切割的文本行: 文本分割的原理如下,先用水平投影取出单一文...
      99+
      2022-11-11
    • OpenCV基于分水岭算法的图像分割怎么实现
      本文小编为大家详细介绍“OpenCV基于分水岭算法的图像分割怎么实现”,内容详细,步骤清晰,细节处理妥当,希望这篇“OpenCV基于分水岭算法的图像分割怎么实现”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。1. ...
      99+
      2023-07-05
    • python+opencv图像分割如何实现分割不规则ROI区域
      这篇文章将为大家详细讲解有关python+opencv图像分割如何实现分割不规则ROI区域,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。python有哪些常用库python常用的库:1.requesuts...
      99+
      2023-06-14
    • Python实现基于标记的分水岭分割算法
      目录1. 原理2.代码实现2.1 利用OpenCV和c++实现分水岭算法2.2 Python实现分水岭分割(1)2.3 Python实现分水岭分割(2)分水岭技术是一种众所周知的分割...
      99+
      2022-11-11
    • 如何基于Python查找图像中常见的颜色
      本篇内容介绍了“如何基于Python查找图像中常见的颜色”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!如果我们能够得知道一幅图像中最多的颜色...
      99+
      2023-06-16
    • 如何在python中使用opencv实现一个颜色检测功能
      本文章向大家介绍如何在python中使用opencv实现一个颜色检测功能的基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。Python主要用来做什么Python主要应用于:1、Web开发;2、数据科学研究;3、网络...
      99+
      2023-06-06
    • python基于OpenCV模块实现视频流数据切割为图像帧数据(流程分析)
      动态视频流数据的处理可以转化为静态图像帧的处理,这样就可以在不改动图像模型的情况下实现视频流数据的处理工作,当然视频流数据也可以采用视频的处理方法来直接处理,这里今天主要是实践一下视...
      99+
      2022-11-11
    • 如何通过OpenCV实现对指定颜色的物体追踪
      这篇文章给大家分享的是有关如何通过OpenCV实现对指定颜色的物体追踪的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。实现对特定颜色的物体追踪,我实验用的是绿萝的树叶。新建脚本ball_tracking.py,加入...
      99+
      2023-06-22
    • 如何实现基于opencv的行人检测
      这篇文章主要为大家展示了“如何实现基于opencv的行人检测”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“如何实现基于opencv的行人检测”这篇文章吧。基于方向梯度直方图(HOG)/线性支持向...
      99+
      2023-06-22
    • 基于Python实现RLE格式分割标注文件的格式转换
      目录1.Airbus Ship Detection Challenge2.数据展示2.1 标注数据2.2 图象文件3.格式转换4.转换结果1.Airbus Ship Detectio...
      99+
      2022-11-11
    • 如何基于OpenCV&Python实现霍夫变换圆形检测
      简述 基于python使用opencv实现在一张图片中检测出圆形,并且根据坐标和半径标记出圆。不涉及理论,只讲应用。 霍夫变换检测圆形的原理 其实检测圆形和检测直线的原理差别不大...
      99+
      2022-11-12
    • 如何基于opencv实现简单的数字识别
      目录前言要解决的问题解决问题的思路总结前言 由于自己学识尚浅,不能用python深度学习来识别这里的数字,所以就完全采用opencv来识别数字,然后在这里分享、记录一下自己在学习过程...
      99+
      2022-11-12
    • 基于Python如何实现图片一键切割九宫格工具
      本文小编为大家详细介绍“基于Python如何实现图片一键切割九宫格工具”,内容详细,步骤清晰,细节处理妥当,希望这篇“基于Python如何实现图片一键切割九宫格工具”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。实...
      99+
      2023-07-05
    • 基于Python如何实现视频分辨率转换
      这篇文章主要为大家展示了“基于Python如何实现视频分辨率转换”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“基于Python如何实现视频分辨率转换”这篇文章吧。环境依赖ffmpeg环境安装,可...
      99+
      2023-06-22
    软考高级职称资格查询
    编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
    • 官方手机版

    • 微信公众号

    • 商务合作