opencv 阈值分割的具体使用

阈值分割

像素图
原始图像像素图 见下面
红色线:标注一条阈值线

二进制阈值化
首先设定一条阀值线 如127
大于127的像素点灰度值设为最大(如unit8的格式为255)
小于127的像素点灰度值设为0

反二进制阈值化
首先设定一条阀值线 如127
大于127的像素点灰度值设为最小为0
小于127的像素点灰度值设为最大(如unit8的格式为255)

截断阈值化
首先选定一个阀值,大于该阈值的像素点呗设定为该阈值,小于该阈值的不变
如:阈值127,大于127的像素点值为127;小于127的不变

反阈值化为0
先选定一个阈值,然后做如下处理:
大于等于该阈值的像素点变为0,
小于该阈值的像素点不变。

阈值化为0
先选定一个阈值,然后做如下处理:
大于等于该阈值的像素点不变,
小于该阈值的像素点变为0。

threshold函数

threshold:中文阈值
方法:
retval,dst=cv2.threshold(src,thresh,maxval,type)
retval:阈值 一般和thresh相同
dst:处理结果的图像

src:原始图像
thresh:阈值,阈值线,对应上文的红线
maxval:最大值,阈值分割后指定的最大值,有1和255。最大值为1对应是二值化图像数据
type:类型,指定那种阈值

threshold 二进制阈值
把亮的处理成白色,暗的处理成黑色

区别二值化阈值:二值化只有0,1。
二进制阈值:可以有其他两个数。二值化是特殊的二进制阈值。

cv2.THRESH_BINARY

算例:设定阈值为127

import cv2

a=cv2.imread('lenacolor.png')#
r,b=cv2.threshold(a,127,255,cv2.THRESH_BINARY)
print('r',r)
cv2.imshow('a',a)
cv2.imshow('b',b)
cv2.waitKey(0)
cv2.destroyAllWindows()

结果:
图中 像素只有0,255
print(b)

threshold 反二进制阈值
把亮的处理成黑色,暗的处理成白色
修改前文代码

cv2.THRESH_BINARY_INV

threshold 截断阈值
亮的不能太亮,有上限,暗的不变
cv2.THRESH_TRUNC

threshold 反阈值化为0
把比较亮的部分处理成0成黑色,小于等于阈值的像素点不变
cv2.THRESH_TOZERO_INV

threshold 阈值化为0
比较亮的部分不变,比较暗的部分处理成黑色为0
cv2.THRESH_TOZERO

到此这篇关于opencv 阈值分割的具体使用的文章就介绍到这了,更多相关opencv 阈值分割内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • python+opencv实现阈值分割

    最近老师留了几个作业,虽然用opencv很简单一句话就出来了,但是还没用python写过.在官方文档中的tutorial中的threshold里,看到可以创建两个滑动条来选择type和value,决定用python实现一下 注意python中的全局变量,用global声明 开始出现了一些问题,因为毁掉函数每次只能传回一个值,所以每次只能更新value,后来就弄了两个毁掉函数,这个时候,又出现了滑动其中一个,另一个的值就会变为默认值的情况,这个时候猜想是全局变量的问题,根据猜想改动之后果然是. 感

  • 利用OpenCV实现局部动态阈值分割

    利用OpenCV实现局部动态阈值分割,参考Halcon dyn_threshold算子的思路实现. #include "dialog.h" #include <QApplication> #include "cv.h" #include "highgui.h" #include <QDebug> int main(int argc, char *argv[]) { IplImage *img = cvLoadImage(&

  • opencv 阈值分割的具体使用

    阈值分割 像素图 原始图像像素图 见下面 红色线:标注一条阈值线 二进制阈值化 首先设定一条阀值线 如127 大于127的像素点灰度值设为最大(如unit8的格式为255) 小于127的像素点灰度值设为0 反二进制阈值化 首先设定一条阀值线 如127 大于127的像素点灰度值设为最小为0 小于127的像素点灰度值设为最大(如unit8的格式为255) 截断阈值化 首先选定一个阀值,大于该阈值的像素点呗设定为该阈值,小于该阈值的不变 如:阈值127,大于127的像素点值为127:小于127的不变

  • Python+OpenCV实现阈值分割的方法详解

    目录 一.全局阈值 1.效果图 2.源码 二.滑动改变阈值(滑动条) 1.效果图 2.源码 三.自适应阈值分割 1.效果图 2.源码 3.GaussianBlur()函数去噪 四.参数解释 一.全局阈值 原图: 整幅图采用一个阈值,与图片的每一个像素灰度进行比较,重新赋值: 1.效果图 2.源码 import cv2 import matplotlib.pyplot as plt #设定阈值 thresh=130 #载入原图,并转化为灰度图像 img_original=cv2.imread(r'

  • Python OpenCV阈值处理详解

    目录 前言 阈值技术简介 简单的阈值技术 阈值类型 简单阈值技术的实际应用 前言 图像分割是许多计算机视觉应用中的关键处理步骤,通常用于将图像划分为不同的区域,这些区域常常对应于真实世界的对象.因此,图像分割是图像识别和内容分析的重要步骤.图像阈值是一种简单.有效的图像分割方法,其中像素根据其强度值进行分区.在本文中,将介绍 OpenCV 所提供的主要阈值技术,可以将这些技术用作计算机视觉应用程序中图像分割的关键部分. 阈值技术简介 阈值处理是一种简单.有效的将图像划分为前景和背景的方法.图像分

  • python数字图像处理之图像自动阈值分割示例

    目录 引言 1.threshold_otsu 2.threshold_yen 3.threshold_li 4.threshold_isodata 5.threshold_adaptive 引言 图像阈值分割是一种广泛应用的分割技术,利用图像中要提取的目标区域与其背景在灰度特性上的差异,把图像看作具有不同灰度级的两类区域(目标区域和背景区域)的组合,选取一个比较合理的阈值,以确定图像中每个像素点应该属于目标区域还是背景区域,从而产生相应的二值图像. 在skimage库中,阈值分割的功能是放在fi

  • OpenCV实现车牌字符分割(C++)

    之前的车牌定位中已经获取到了车牌的位置,并且对车牌进行了提取.我们最终的目的是进行车牌识别,在这之前需要将字符进行分割,方便对每一个字符进行识别,最后将其拼接后便是完整的车牌号码.关于车牌定位可以看这篇文章: OpenCV车牌定位(C++),本文使用的图片也是来自这里. 先来看一看原图: 最左边的汉字本来是 沪,截取时只获得了右边一点点的部分,这与原图和获取方法都有关,对于 川.沪- 这一类左右分开的字会经常发生这类问题,对方法进行优化后可以解决,这里暂时不进行讨论. 后面的字都是完整的,字符分

  • python中opencv实现文字分割的实践

    图片文字分割的时候,常用的方法有两种.一种是投影法,适用于排版工整,字间距行间距比较宽裕的图像:还有一种是用OpenCV的轮廓检测,适用于文字不规则排列的图像. 投影法 对文字图片作横向和纵向投影,即通过统计出每一行像素个数,和每一列像素个数,来分割文字. 分别在水平和垂直方向对预处理(二值化)的图像某一种像素进行统计,对于二值化图像非黑即白,我们通过对其中的白点或者黑点进行统计,根据统计结果就可以判断出每一行的上下边界以及每一列的左右边界,从而实现分割的目的. 算法步骤: 使用水平投影和垂直投

  • C++ OpenCV单峰三角阈值法Thresh_Unimodal详解

    目录 需求说明 具体流程 功能函数 C++测试代码 测试效果 需求说明 在对图像进行处理时,经常会有这类需求:想通过阈值对图像进行二值化分割,以提取自己感兴趣的区域,常见的阈值分割方法有常数分割.最大类间方差法.双峰分割.三角法等等,不同的场景应用不同的阈值方法. 今天要讲的方法,适合当图像的直方图具有明显单峰特征时使用,结合了三角法的原理而设计,相比较OpenCV自带的三角法,好处是可以根据自身需求合理修改函数:如果用OpenCV库的函数,只有一个接口,若不能达到较理想的应用效果,就束手无策了

  • Python+OpenCV实现分水岭分割算法的示例代码

    目录 前言 1.使用分水岭算法进行分割 2.Watershed与random walker分割对比 前言 分水岭算法是用于分割的经典算法,在提取图像中粘连或重叠的对象时特别有用,例如下图中的硬币. 使用传统的图像处理方法,如阈值和轮廓检测,我们将无法从图像中提取每一个硬币,但通过利用分水岭算法,我们能够检测和提取每一个硬币. 在使用分水岭算法时,我们必须从用户定义的标记开始.这些标记可以通过点击手动定义,或者我们可以使用阈值和/或形态学操作等方法自动或启发式定义它们. 基于这些标记,分水岭算法将

随机推荐