python-opencv第四期:threshold函数详解

这篇具有很好参考价值的文章主要介绍了python-opencv第四期:threshold函数详解。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

概要: 众嗦粥汁所周知,在如今计算机视觉(Computer Version short for CV)是人工智能与机器人技术发展的一个重大研究方向,而opencv作为一个专门为计算机视觉编程提供技术与函数支持的第三方库,自然是一个需要重点研究的内容。

            本期所要介绍的函数是opencv库中的函数——threshold

            thresold函数的主要作用是图像阈值分割,利用图像中像素像素值大小的差别,选择一个适当的阈值,将图像分割为目标区域(target_area)与背景区域(background_area),生成一个我们需要的二值图像,主要特点是黑白分明。(什么是黑白分明~~是是非非谁人会懂~~)。二值图将为我们裁剪目标区域,进行目标识别与分析剔除不必要的背景区域,消除不必要区域对于图像处理的干扰。

            本期依旧是请出“饥荒”(就逮着一只羊薅羊毛)中的角色“沃尔夫冈”(下图可见)作为我们本期文章的演示素材嘉宾。他在强壮时期强壮如牛,瘦弱时期瘦弱如鼠(肾虚)的特点完美符合二值图黑白分明的特点。话不多说,我是Kamen Black君,马上开始今天的学习,我已经等不及力

python-opencv第四期:threshold函数详解​ 

 正文部分:

python-opencv第四期:threshold函数详解

print("祝大家每天快乐,love and peace!")

①使用准备:

与前几期一样,依旧是调用我们的工具人老伙伴----opencv,作为我们使用threshold的大前提。

import cv2

②适用情况(新内容):

图像阈值分割一般适用于背景区域与目标区域像素值分别较大的情况。只有当两者之间的区别较大时,才能够较为容易地找到一个适当的阈值作为区别两者的分界线,不然如果两者之间的灰度值差异不明显,就可能会导致区域的错误划分,或者是阈值的难以选择,抑或是得不到封闭的单连通区域,这会使得后续的目标裁剪变得复杂与困难。(只怕是藕断丝连~~一切都是难舍难分~~

③语法说明:

使用语法:thresh,result=cv2.threshold (src, thresh, maxval, type)

参数说明:thresh为设定的阈值,取值范围即为灰度值的范围0~255,数据类型为浮点型(输入可以为整型);

                  result为进行阈值分割后的结果图像,数据类型为整数矩阵;

                  src为被进行分割的源图像,一般为单通道的灰度图,但三通道的RGB图像也可以进行处理(但可能只根据第一个通道的大小进行处理(所谓枪打出头鸟))

                  maxval为最大值,为分割后的图像所取到的灰度最大值

                  type为阈值分割的类型,常用的有THRESH_BINARY、THRESH_BINARY_INV、THRESH_TOZERO、THRESH_TOZERO_INV。具体的说明可见下表所示:

threshold types说明
THRESH_BINARY 灰度值超过阈值的像素设置为最大灰度值,不超过的设置为0
THRESH_BINARY_INV 灰度值不超过阈值的像素设置为最大灰度值,超过的设置为0
THRESH_TOZERO 灰度值低于阀值的像素设为0灰度值
THRESH_TOZERO_INV 灰度值高于阀值的像素设为0灰度值
THRESH_TRUNC 灰度值超过阈值的像素设为阈值的灰度值
THRESH_MASK 掩码
THRESH_OTSU 标记,使用大津算法来选择最佳阈值,只支持8位单通道图像
THRESH_TRIANGLE 标记,使用TRIANGLE算法来算则最佳阈值,只支持8位单通道图像

另附上cv2.threshold函数的原生文档说明(有道翻译是个好东西(有道还不打钱)) 

def threshold(src, thresh, maxval, type, dst=None): # real signature unknown; restored from __doc__
    """
    threshold(src, thresh, maxval, type[, dst]) -> retval, dst
    .   @brief Applies a fixed-level threshold to each array element.
    	
    .   
    .   The function applies fixed-level thresholding to a multiple-channel array. The function is typically
    .   used to get a bi-level (binary) image out of a grayscale image ( #compare could be also used for
    .   this purpose) or for removing a noise, that is, filtering out pixels with too small or too large
    .   values. There are several types of thresholding supported by the function. They are determined by
    .   type parameter.
    	
    .   
    .   Also, the special values #THRESH_OTSU or #THRESH_TRIANGLE may be combined with one of the
    .   above values. In these cases, the function determines the optimal threshold value using the Otsu's
    .   or Triangle algorithm and uses it instead of the specified thresh.
		
    .   
    .   @note Currently, the Otsu's and Triangle methods are implemented only for 8-bit single-channel images.
    	
    .   @param src input array (multiple-channel, 8-bit or 32-bit floating point).
    	
    .   @param dst output array of the same size  
    	and type and the same number of channels as src.	
    	
    .   @param thresh threshold value. 
    .   @param maxval maximum value to use with the #THRESH_BINARY and #THRESH_BINARY_INV thresholding
    .   types.
		
    .   @param type thresholding type (see #ThresholdTypes).
    	
    .   @return the computed threshold value if Otsu's or Triangle methods used.
    .   
    .   @sa  adaptiveThreshold, findContours, compare, min, max
    """
    pass

④实例操作:

下面通过几个简单的操作,给大家呈现一下参数不同的情况下对图片处理情况的不同(沃尔夫冈大放送(bushi)):

1、掉色的沃尔夫冈:

>>> src=cv2.imread("F://src.png")
>>> thresh,result0=cv2.threshold(src,80,255,cv2.THRESH_BINARY)

python-opencv第四期:threshold函数详解

2、白纸黑字的沃尔夫冈:

>>> gray=cv2.cvtColor(src,cv2.COLOR_BGR2GRAY)
>>> thresh,result1=cv2.threshold(gray,80,255,cv2.THRESH_BINARY)

python-opencv第四期:threshold函数详解

3、黑纸白字的沃尔夫冈:

>>> gray=cv2.cvtColor(src,cv2.COLOR_BGR2GRAY)
>>> thresh,result2=cv2.threshold(gray,80,255,cv2.THRESH_BINARY_INV)

python-opencv第四期:threshold函数详解

4、网抑云的沃尔夫冈:

>>> gray=cv2.cvtColor(src,cv2.COLOR_BGR2GRAY)
>>> thresh,result3=cv2.threshold(gray,80,255,cv2.THRESH_TOZERO)

python-opencv第四期:threshold函数详解

5、底片的沃尔夫冈:

>>> gray=cv2.cvtColor(src,cv2.COLOR_BGR2GRAY)
>>> thresh,result4=cv2.threshold(gray,80,255,cv2.THRESH_TOZERO_INV)

python-opencv第四期:threshold函数详解

6、素描的沃尔夫冈:

>>> gray=cv2.cvtColor(src,cv2.COLOR_BGR2GRAY)
>>> thresh,result5=cv2.threshold(gray,80,255,cv2.THRESH_TRUNC)

python-opencv第四期:threshold函数详解

PS:一个小知识:threshold在英语中的原意是“门槛”的意思,在这里就延伸了它的意思,引申出了“阈值、限值”的内涵。看我的博客还能学英语,这样的宝藏博主还不赶快关注起来:> 

沃尔夫冈:多少有点臭不要脸了 

结语:本期中我们学习了threshold函数,了解到opencv中用来进行图像阈值切割的方法,学会了将目标区域与背景区域分离开来的方式,也学会使用不同的threshold类型来对图像作不同类型的阈值切割处理,这些对于我们进一步对于目标区域进行识别都有很大的帮助。

好了以上就是所有的内容,希望大家多多关注,点赞,收藏,这对我有很大的帮助。谢谢大家了!

python-opencv第四期:threshold函数详解

好了,这里是Kamen Black君。祝国康家安,大家下次再见喽!!!溜溜球~~

 python-opencv第四期:threshold函数详解文章来源地址https://www.toymoban.com/news/detail-450636.html

到了这里,关于python-opencv第四期:threshold函数详解的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • python-opencv第五期:rectangle函数详解

    概要: 众 嗦粥汁 所周知,在如今计算机视觉( Computer Version  short for CV)是人工智能与机器人技术发展的一个重大研究方向,而 opencv 作为一个专门为计算机视觉编程提供技术与函数支持的第三方库,自然是一个需要重点研究的内容。             本期所要介绍的函数是o

    2024年02月05日
    浏览(39)
  • python-opencv第一期:imread函数详解

    概要:众 嗦粥之 所周知,在如今计算机视觉( Computer Version short for CV)是人工智能与机器人技术发展的一个重大研究方向,而 opencv 作为一个专门为计算机视觉编程提供技术与函数支持的第三方库,自然是一个需要重点研究的内容。本篇博客将介绍python-opencv库中较为简单的

    2024年02月09日
    浏览(35)
  • 码银送书第四期《Python之光》

    作为一种极其流行的编程语言,Python已经成为了当今最为重要的生产力工具之一。无论小学生还是各行各业的从业人员,都开始学习Python编程。这种编程语言在许多领域中都有广泛的应用,因此Python编程已经成为了许多职业的必备能力或者加分项。 然而,在市面上的Python入门

    2024年02月15日
    浏览(63)
  • python-opencv第七期:开运算与闭运算详解(上)

    目录 概要: 正文部分: 概念介绍:  何谓“开”与“闭”: 如何实现开运算与闭运算: 应用场景: 结语: 众 嗦粥汁 所周知,在如今计算机视觉( Computer Version  short for CV)是人工智能与机器人技术发展的一个重大研究方向,而 opencv 作为一个专门为机计算机视觉编程提供

    2024年02月04日
    浏览(33)
  • python-opencv之形态学操作(腐蚀和膨胀)原理详解

    Removing noise. Isolation of individual elements and joining disparate elements in an image. Finding of intensity bumps or holes in an image. 最基本的形态操作是侵蚀和扩张。让我们更详细地了解这些操作。 原理 它会侵蚀前景物体的边界,并从图像中移除小规模的细节,但同时会减少感兴趣区域的大小。

    2024年02月05日
    浏览(51)
  • 【大虾送书第四期】《Python之光:Python编程入门与实战》

    目录 ✨写在前面 ✨本书亮点 ✨强力推荐 ✨文末福利       🦐博客主页:大虾好吃吗的博客      🦐专栏地址:免费送书活动专栏地址         作为一种极其流行的编程语言,Python已经成为了当今最为重要的生产力工具之一。无论小学生还是各行各业的从业人员,都

    2024年02月15日
    浏览(57)
  • OpenCV阈值处理(threshold函数、自适应阈值处理、Otsu处理)

    目录 阈值处理 一.threshold函数 1.二值化阈值处理(cv2.THRESH_BINARY) 2.反二值化阈值处理( cv2.THRESH_BINARY_INV) 3.截断阈值化处理(cv2.THRESH_TRUNC) 4.超阈值零处理(cv2.THRESH_TOZERO_INV) 5.低阈值零处理(cv2.THRESH_TOZERO)  二.自适应阈值处理  三.Otsu处理 阈值处理是指剔除图像内像素

    2024年02月12日
    浏览(44)
  • 图像形态学-阈值的概念、功能及操作(threshold()函数))【C++的OpenCV 第九课-OpenCV图像常用操作(六)】

    首先,顾名思义,“ 阈 ”就是范围或者 限制 ,所以,“阈值”就是 某个限制的值 (该值具有一定的数学含义,即“ 临界值 ”,例如车辆限高杆的高度就是一种阈值,不可超越;亦或者1.1米以下儿童不收费,超过1.1就要收费。) 其次,图形学中的阈值,往往指某个你想要

    2024年02月03日
    浏览(47)
  • 【OpenCV常用函数:颜色空间转换、阈值化】cv2.cvtColor()+cv2.threshold()

    对图像进行颜色空间的转换 对图像进行阈值化/二值化

    2024年02月13日
    浏览(61)
  • OpenCV-Python学习(10)—— OpenCV 图像二值化处理(cv.threshold)

    1. 学习目标 理解图像的分类,不同类型的图像的区别; 对图像进行二值化处理,对【 cv.threshold 】函数的理解。 2. 图像分类 2.1 不同类型图像说明 按照颜色对图像进行分类,可以分为二值图像、灰度图像和彩色图像。 二值图像: 只有黑色和白色两种颜色的图像。 每个像素

    2024年02月03日
    浏览(69)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包