图像阈值(opencv_python学习)

2023-10-27

简单阈值

cv.threshold 函数是 OpenCV 中用于应用阈值处理的函数,具体的语法如下:

ret, dst = cv2.threshold(src, thresh, maxval, type[, dst])

参数说明:

  • src:源图像,应为灰度图像(单通道)。
  • thresh:阈值,用于对像素值进行分类。
  • maxval:分配给超过阈值的像素值的最大值。
  • type:阈值处理类型,用于控制像素分类的方式,可以使用以下常见的简单阈值类型:
  • cv2.THRESH_BINARY:二值化阈值处理,将小于阈值的像素值设置为0,大于等于阈值的像素值设置为 maxval。
  • cv2.THRESH_BINARY_INV:反二值化阈值处理,将小于阈值的像素值设置为 maxval,大于等于阈值的像素值设置为0。
  • cv2.THRESH_TRUNC:截断阈值处理,将小于阈值的像素值保持不变,大于等于阈值的像素值设置为阈值。
  • cv2.THRESH_TOZERO:阈值化为零处理,将小于阈值的像素值设置为0,大于等于阈值的像素值保持不变。
  • cv2.THRESH_TOZERO_INV:反阈值化为零处理,将小于阈值的像素值保持不变,大于等于阈值的像素值设置为0。
  • dst:输出的目标图像(可选参数),与源图像具有相同的尺寸和数据类型。
    函数返回两个值:

  • ret:计算的阈值值。

  • dst:处理后的图像。

在这里插入图片描述

自适应阈值

自适应阈值化是一种基于局部像素区域确定阈值的阈值处理方法,可以解决图像在不同区域具有不同光照条件的情况下的阈值处理问题,算法基于像素周围的小区域确定像素的阈值。
OpenCV 中提供了 cv2.adaptiveThreshold 函数来实现自适应阈值化。

cv.adaptiveThreshold(src, maxValue, adaptiveMethod, thresholdType, blockSize, C[, dst])
  • src:输入图像,必须为单通道(灰度图像)。
  • maxValue:所得阈值的最大值。
  • adaptiveMethod:自适应阈值计算方法,可以选择以下两种方法之一:
  • cv.ADAPTIVE_THRESH_MEAN_C:阈值为邻域像素的平均值减去常数 C。
  • cv.ADAPTIVE_THRESH_GAUSSIAN_C:阈值为邻域像素的高斯加权平均值减去常数 C。
  • thresholdType:阈值类型,可以选择以下两种类型之一:
  • cv.THRESH_BINARY:大于阈值的像素值设为 maxValue,小于等于阈值的像素值设为 0。
  • cv.THRESH_BINARY_INV:大于阈值的像素值设为 0,小于等于阈值的像素值设为 maxValue。
  • blockSize:邻域大小,用于计算每个像素的阈值。
  • C:从邻域像素的平均值或加权总和中减去的一个常数。
  • dst:输出图像,与输入图像具有相同的大小和深度。如果未提供,则函数会创建一个新的图像来存储结果。
    在这里插入图片描述
import numpy as np
import cv2 as cv

# 读取图像
img = cv.imread('pic1.jpg', 0)

# 获取图像尺寸
rows, cols = img.shape

max_value = 255
adaptive_method = cv.ADAPTIVE_THRESH_MEAN_C
threshold_type = cv.THRESH_BINARY
block_size = 11
constant = 2
threshold_img = cv.adaptiveThreshold(img, max_value, adaptive_method, threshold_type, block_size, constant)

# 显示结果
cv.imwrite('pic.jpg', threshold_img)
cv.waitKey(0)
cv.destroyAllWindows()

在这里插入图片描述

Otsu二值化

Otsu的二值化(Otsu’s thresholding)是一种自动确定全局阈值的图像二值化方法。它通过分析图像的直方图,找到一个最佳的阈值,以将图像分为前景和背景两部分。

cv2.threshold函数进行Otsu的二值化处理。在函数中,将阈值设为0(该值不会影响Otsu的计算),将阈值类型设置为cv2.THRESH_BINARY + cv2.THRESH_OTSU。函数会自动计算出最佳的阈值,并将结果保存在threshold_img变量中。

_, threshold_img = cv2.threshold(img, 0, 255, cv2.THRESH_BINARY + cv2.THRESH_OTSU)

在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

图像阈值(opencv_python学习) 的相关文章

随机推荐

  • Mybatis执行流程(下)------Dao层详解

    Mybatis执行流程 下 Dao层详解 Mapper简介 上文结尾在项目中发现会用到Dao层的mapper接口和映射文件等 这是因为在之前开发中有很多冗余的工作 比如要实现100个增删查改的方法 除了本身的业务逻辑代码 还要存在开启 提交
  • 矩阵系列:浮点转定点

    浮点转定点是个比较基础的知识点吧 所以作为开篇 简单的举几个小例子 通过例子 相信大家都能掌握它 简单说明一下 浮点包括 符号位 指数位 小数位 浮点的类型包括 单精度浮点数 双精度浮点数 这里用到的是单精度浮点数 单精度浮点数 1位符号位
  • 【100天精通python】Day5:python基础_python 基本语句,流程控制语句

    目录 1 条件语句 1 1 if语句 1 2 if else语句 1 3 if elif else语句 2 循环语句 2 1 for循环 2 2 while循环 3 跳转语句 3 1 break语句 3 2 continue语句 3 3 p
  • 人类早期驯服野生自动驾驶汽车的珍贵史料

    金磊 西风 发自 凹非寺量子位 公众号 QbitAI 从洛杉矶到拉斯维加斯 谁跑第一 谁就能获得100万美元奖金 21年前 美国国防部高级研究计划局 DARPA 局长托尼 特瑟 在一次活动中现场宣布了这么一个决定 并将此命名为 DARPA大
  • Android -- ImageLoader简析

    图片的内存缓存实现 Image Loader库有一个较完整的内存缓存实现 使用者可以根据需要选择已经实现的策略 也可以定制自己项目中需要的策略 内存缓存实现代码在memory和memory impl这两个包中 前者就是规范视图 后者是实现视
  • 【多视几何】对极几何(Epipolar Geometry)基础及OpenCV实现:对极约束、基础矩阵、本质矩阵和单应矩阵

    文章目录 1 对极约束 Epipolar constraint 1 1 基本术语 1 2 数学推导 2 基础矩阵 Fundamental Matrix 3 本质矩阵 Essential Matrix 4 OpenCV中的相关函数 4 1 特
  • jemter安装过程

    一 安装jdk 二 安装Jmeter 1 下载Jmeter 官网地址 http jmeter apache org download jmeter cgi 2 解压Jmeter安装包 配置Jmeter环境变量 按下面变量名和变量值配置Jme
  • 从一道面试题说起:GET 请求能传图片吗?

    作者 沉末 原文地址 https juejin im post 6860253625030017031 前言 曾经遇到的面试题 觉得挺有意思 来说下我的答案及思考过程 首先 我们要知道的是 图片一般有两种传输方式 base64 和 file
  • Linux:20个linux常用命令

    文章目录 20个linux常用命令 1 ls 列出文件list 2 cd 切换目录change directory 3 cp 复制copy 4 mv 移动move 5 rm 移除 删除remove 6 mkdir 创建文件夹make dir
  • 移动IM开源框架对比

    最近在看移动IM相关的资料 然后发现网上有很多的资料 所以在学习过程中 整理了一些笔记 供那些 想了解 移动IM的童鞋一些参考 移动IM技术选型要点 1 协议选型 2 IM 服务器选型 3 协议和IM服务器改造 4 移动IM常见问题以及一些
  • TS的模块化

    TypeScript 模块化 TS中的模块分为外部模块和内部模块 内部模块称为命名空间 内部模块 主要用于组织代码 避免命名冲突 外部模块简称为模块 侧重代码的复用 一个模块里可能有多个命名空间 模块在自身的作用域里执行 而不是在全局作用域
  • 【电气专业知识问答】问:电动机本体温度异常升高如何处理?

    电气专业知识问答 问 电动机本体温度异常升高如何处理 答 1 起因 电动机本体温度异常可能是由于过载 电压低导致过电流 电压高引起铁耗过大 线圈短路或接地 电缆一相断线或接触不良 由于灰尘而导致接触不良等原因 2 处理 应开启备用电动机 停
  • ADXL345测量角度

    include
  • react--umi, 根据权限展示菜单,完成页面权限分配,以及路由鉴权

    umi框架 prolayout布局 access设置菜单权限 initialState全局初始化数据 配合使用 根据后端返回的权限信息 完成菜单的不同的权限的不同展示 1 umi 配合 patlayout 布局 实现根据配置的路由展示菜单栏
  • cocos2d-x2.2.3和android平台环境的搭建

    最开始学习cocos2dx 大多数人可能是被复杂的环境配置过程搞死的 尤其是和Android平台搭建这一块 会把人搞疯 而且各个版本也会有不少的差异 我也是参考了很多才在自己的电脑里搭建好的 仅供参考 是基于cocos2d x2 2 3版本
  • Unity 方向键输入 Input.GetAxis() 和Input.GetAxisRaw(),Vertical 与Horizontal

    GetAxis 是个方法 需要传参数 参数为string类型 参数如下 一 触屏类 1 Mouse X 鼠标沿着屏幕X移动时触发 2 Mouse Y 鼠标沿着屏幕Y移动时触发 3 Mouse ScrollWheel 当鼠标滚动轮滚动时触发
  • ML算法——最优化

    文章目录 数学预备知识 1 最优化问题 2 凸优化 2 1 梯度下降 2 2 牛顿法 2 3 阻尼牛顿法 2 4 拟牛顿法 2 5 总结 数学预备知识 1 最优化问题 最优化问题指的是在给定条件下 找到一个目标函数的最优解 即找到能够使目标
  • ubuntu 开启自启

    开机启动界面 安装chrome浏览器 1 2 wget https dl google com linux direct google chrome stable current amd64 deb sudo apt install goo
  • apache的ab命令做压力测试

    1 最基本的关心两个选项 c n 例 ab c 100 n 10000 http 127 0 0 1 index php c 100 即 每次并发100个 n 10000 即 共发送10000个请求 2 测试结果分析 junjie2 log
  • 图像阈值(opencv_python学习)

    图像阈值 简单阈值 自适应阈值 Otsu二值化 简单阈值 cv threshold 函数是 OpenCV 中用于应用阈值处理的函数 具体的语法如下 ret dst cv2 threshold src thresh maxval type d