• 【OpenCV-Python-课程学习(贾)】OpenCV3.3课程学习笔记:图像二值化的方法(inRange、threshold),图像阈值处理


    一、图像二值化——inRange()

    inRange的语法如下

    dst = inRange(src, upper, lower)

    • src是图像数据
    • upper可以是单个数值,也可以是与src相同大小的数组,代表筛选范围最高边界
    • lower可以是单个数值,也可以是与src相同大小的数组,代表筛选范围最低边界
    • dst既可以写进圆括号内,也可以作为函数的返回值被接收

    API运行原理

    如果图像中的像素点数值在upper和lower定义的范围之内,就在像素点所在位置返回255;反之不在范围内就返回0。

    二、提取特定颜色——inRange()

    第一部分讲了inRange()的工作原理,现在我们讲讲它的应用案例——提取图像特定颜色,比如提取出图像中的绿色。

    我们需要知道绿色的三个通道各自取值范围,网上有些文章已经总结了每一种颜色的各通道取值区间,举个例子【OpenCV】HSV颜色识别-HSV基本颜色分量范围 - 腾讯云开发者社区

    我们可以发现,基本上在颜色空间HSV中,这样的取值范围才有意义;所以我们还需要用cvtColor()将其他颜色空间转换成HSV颜色空间。

    从表中我们可以看出绿色的最小边界是[35, 43, 46],最大边界是[77, 255, 255]。

    因此我们可以写成dst = inRange(src, np.array([35, 43, 46]), np.array([77, 255, 255])),来提取图像src中的绿色区域,再执行src[dst==0] = 0后,得到的图像除了绿色区域,其他部分都是黑色。

    三、图像阈值处理——threshold()

    参考官方API文档:OpenCV: Miscellaneous Image Transformations-Threshold()

    图像阈值处理是图像二值化中的一种方法,图像二值化不是说最后得到的像素值是0和1(倘若真的是0和1,颜色是全黑,显然非此)。

    直接给出API的语法格式。

    cv.threshold(src, thresh, maxval, type[, dst]) ->retval, dst

    • src是图像;虽然可以传入多通道彩图(这时候对各个通道单独进行阈值处理),但不建议,灰度图才是最适合阈值处理的。
    • thresh是阈值;如果像素值大于阈值就取maxval,否则取0;如果type中设置了自动获取阈值的flag(cv.THRESH_OTSU和cv.THRESH_TRIANGLE),那么thresh一般设置成255,这时不起任何作用。
    • maxval是最大填充值;最后得到的图像像素值只有两个,如果type是cv.THRESH_BINARY和cv.THRESH_BINARY_INV时,才会用到maxval,小的填充值是0,而大的填充值是maxval,一般设定成255(灰度图——>白色)。
    • type有很多种,用来指定阈值化处理的类型;如果是二值化阈值处理就是cv.THRESH_BINARY和cv.THRESH_BINARY_INV,如果是截断阈值处理就是cv.THRESH_TRUNC,如果是趋零阈值处理就是cv.THRESH_TOZERO和cv.THRESH_TOZERO_INV;此外还可以设置是否自动获取阈值,对应的flag是cv.THRESH_OTSU和cv.THRESH_TRIANGLE,对应两种自动获取阈值的算法;上面提到的最后两种type只能任选一个,同样前面五种type也只能任选一个,一个正确的示例type=cv.THRESH_BINARY | cv.THRESH_OTSU,当然竖杠号也可换成加号。
    • retval是返回值,如果非自动获取阈值,最后的retval和设定的thresh相等,而如果是自动获取阈值,返回的是使用自动获取阈值算法得到的阈值。
    • dst也即阈值化处理后的图像结果。
  • 相关阅读:
    网页按钮点击动画
    2023年B题人工智能对大学生学习影响的评价
    机器学习-聚类算法
    7-26 求素数个数——朴素筛
    Go语言技巧之正确高效使用slice(听课笔记总结--简单易懂)
    【ARM Coresight OpenOCD 系列 1 -- OpenOCD 介绍】
    C语言 判断函数输入参数的个数
    基于html+css+jquery+bootstrap响应式网页制作模板——红色中国文化主题:大美中国
    OpenHarmony之C/C++编码风格一键格式化
    京东架构师呕心整理:jvm与性能调优有哪些核心技术知识点
  • 原文地址:https://blog.csdn.net/PSpiritV/article/details/126036416