• 【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也即阈值化处理后的图像结果。
  • 相关阅读:
    MoneyPrinterPlus:AI自动短视频生成工具,详细使用教程
    STL常用容器的模拟实现
    Java责任链模式
    6.1 - OSI/RM七层模型、TCP/IP四层模型
    使用Docker安装ElasticSearch和可视化界面Kibana【图文教学】
    华为机试真题 C++ 实现【信道分配】
    高德地图开发实战案例:实现信息弹出框的富文本展示效果
    java毕业生设计医院取药系统计算机源码+系统+mysql+调试部署+lw
    一段木棍剪成三段,能够组成三角形的概率是多少
    redis面试题
  • 原文地址:https://blog.csdn.net/PSpiritV/article/details/126036416