机器视觉学习(八)—— 阈值化

news2024/12/26 10:45:56

目录

一、阈值化

二、二值化和示例

2.1 二值化

2.2 示例代码


一、阈值化

OpenCV是一个开源的计算机视觉库,可以用于图像处理和计算机视觉任务。阈值化是图像处理中的一种常见操作,可以将图像的像素值分成两个或多个不同的类别,通常是黑色和白色。

使用OpenCV进行阈值化的步骤如下:

  1. 导入OpenCV库:

    import cv2
    
  2. 读取图像:

    image = cv2.imread('image.jpg')
    
  3. 将图像转换为灰度图像:

    gray_image = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
    
  4. 对图像进行阈值化:

    ret, threshold_image = cv2.threshold(gray_image, threshold_value, max_value, threshold_type)
    
    • gray_image:要进行阈值化的灰度图像
    • threshold_value:阈值,用于将像素分为不同的类别。可以是一个具体的值,也可以是一个自适应的方法。
    • max_value:像素值超过阈值的像素被赋予的值。
    • threshold_type:阈值化的类型。可以是简单阈值化、自适应阈值化等。

    阈值化后的图像将被存储在threshold_image中。

  5. 显示阈值化后的图像:

    cv2.imshow('Threshold Image', threshold_image)
    cv2.waitKey(0)
    cv2.destroyAllWindows()
    

    这将创建一个新的窗口,并显示阈值化后的图像。

二、二值化和示例

2.1 二值化

函数原型如下:

ret, binary_img = cv2.threshold(gray_img, threshold, max_value, threshold_type)

其中,threshold是阈值,max_value是像素值上限,threshold_type是二值化的类型。

常用的threshold_type有:

  • cv2.THRESH_BINARY:二值化
  • cv2.THRESH_BINARY_INV:反二值化
  • cv2.THRESH_TRUNC:截断
  • cv2.THRESH_TOZERO:零化
  • cv2.THRESH_TOZERO_INV:反零化

个人笔记:

"""
    简单阈值
"""


"""
分离图像中的背景和我们关注的物体    (处理灰度图)

函数原型:   
    ret,变量名 = cv2.threshold(src, thresh, maxval, type)
        src(img):       输入图,只能输入单通道图像,通常来说为灰度图
        thresh:         阈值
        maxval:         当像素值超过了阈值(或者小于阈值),根据 type来决定,所赋予的值
        type:           二值化操作的类型

    常用二值化操作类型:
        cv2.THRESH_BINARY   
        dst = (src > thresh) ? MAXVALUE:0   表示当像素值大于设定的阈值时,为 MAXVALUE,否则为 0

        cv2.THRESH_BINARY_INV           
        dst = (src > thresh) ? 0:MAXVALUE   表示当设定的阈值大于像素值时,为 MAXVALUE,否则为 0

        cv2.THRESH_TRUNC                dst = (src > thresh) ? THRESH:SRC
        cv2.THRESH_TOZERO               dst = (src > thresh) ? SRC:0
        cv2.THRESH_TOZERO_INV           dst = (src > thresh) ? 0:SRC


二值化
    cv2.threshold(img,127,255,cv.THRESH_BINARY)
二值化翻转
    cv2.threshold(img,127,255,cv.THRESH_BINARY_INV)


"""

2.2 示例代码


import cv2 as cv

img = cv.imread("D:/Open_CV/OpenCV_demo/Pictures/4.png",0)      # 图像的绝对路径  
img = cv.resize(img,(480,480),interpolation=cv.INTER_AREA)      # 图像缩放

ret,th1 = cv.threshold(img,127,255,cv.THRESH_BINARY)            # 二值化
ret,th2 = cv.threshold(img,127,255,cv.THRESH_BINARY_INV)        # 二值化翻转

cv.imshow("img",img)
cv.imshow("th1",th1)
cv.imshow("th2",th2)

cv.waitKey(0)

运行结果:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1559637.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

python统计分析——双样本均值比较

参考资料:python统计分析【托马斯】 1、配对样本t检验 在进行两组数据之间的比较时,有两种情况必须区分开。在第一种情况中,同一对象在不同时候的两个记录值进行相互比较。例如,用学生们进入初中时的身高和他们一年后的身高&…

wails 创建Go 项目

##wails是一个可以让go和web技术编写桌面应用#安装wails go install github.com/wailsapp/wails/v2/cmd/wailslatest#检查环境 wails doctor 创建项目wails init -n AuxiliaryTools -t vue-ts拉取go.mod的依赖项 go mod tidy进入 frontend 前端安装依赖项npm install /pnpm ins…

GitHub - 使用SSH进行连接(续)

文章目录 前言开发环境SSH源码获取SSH源码分析最后 前言 上篇文章中提出了存在一些默认密钥文件会被SSH自动添加的猜测,现在我们通过一些分析来验证这个猜测。 开发环境 MacOS: 14.3.1SSH: OpenSSH_9.4p1 SSH源码获取 该怎么验证这个猜测呢?有个方法…

QT初识(2)

QT初识(2) 创建好项目之后,多了些什么东西?main.cppwidget.hwidget.cppwidget.ui.pro项目工程文件 我们今天来继续了解QT。如果没看过上一次QT初识的小伙伴可以点击这里: https://blog.csdn.net/qq_67693066/article/d…

ADB(Android Debug Bridge)操作命令详解及示例

ADB(Android Debug Bridge)是一个强大的命令行工具,它是Android SDK的一部分,主要用于Android设备(包括真实手机和平板电脑以及模拟器)的调试、系统控制和应用程序部署。 下面是一些ADB的常用命令&#xff…

全国植被覆盖度VFC逐月数据/NDVI/净初级生产力NPP/植被类型​

引言 植被覆盖度是指植被(包括叶、茎、枝)在地面的垂直投影面积占统计区总面积的百分比。是刻画地表植被覆盖的一个重要参数, 也是指示生态环境变化的重要指标之一。 正文 数据简介 容易与植被覆盖度混淆的概念是植被盖度,植被盖度是指植被冠…

腾讯云轻量服务器8核16G服务器价格1668元一年送3个月,18M大带宽

腾讯云轻量应用服务器8核16G配置租用优惠价格1668元15个月,买一年送3个月,配置为:轻量8核16G18M、270GB SSD盘、3500GB月流量、18M带宽,腾讯云优惠活动 yunfuwuqiba.com/go/txy 活动链接打开如下图: 腾讯云8核16G服务器…

复写零->C语言和JAVA版本的双指针解法

使用C语言和JAVA语言版本双指针来解决复写零问题 力扣链接:https://leetcode.cn/problems/duplicate-zeros/description/ 题意:对一个数组进行复写,遇到0写两遍,非0写一遍,复写结果不能超过原数组长度,即当复写结果达到数组长度时,后面的结果数组元素直接舍弃. 例子 思路:找到…

Spring Boot单元测试全指南:使用Mockito和AssertJ

🌟 前言 欢迎来到我的技术小宇宙!🌌 这里不仅是我记录技术点滴的后花园,也是我分享学习心得和项目经验的乐园。📚 无论你是技术小白还是资深大牛,这里总有一些内容能触动你的好奇心。🔍 &#x…

机器学习每周挑战——旅游景点数据分析

数据的截图,数据的说明: # 字段 数据类型 # 城市 string # 名称 string # 星级 string # 评分 float # 价格 float # 销量 int # 省/市/区 string # 坐标 string # 简介 string # 是否免费 bool # 具体地址 string拿到数据…

SAP 学习笔记 - 系统移行业务 - Migration cockpit工具 - 移行Material(品目)

本章开始,来研究研究移行工具 Migration cockpit。 理论啥的先放一边,来先做一个简单的实例,以对 Migration cockpit 有个大概的印象。 这里就先做一个移行品目的例子。 1,LTMC 启动Migration cockpit工具 默认给我启动了 IE &a…

Python基础之pandas:Series和DataFrame定义及使用

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、Series特点二、Series使用步骤1.Series定义2.索引和切片3.series的.get()4.掩码提取5.Series运算符和广播方法6.ufunc在Series对象中使用 三、DataFrame1.D…

使用python实现i茅台自动预约

使用python实现i茅台自动预约[仅限于学习,不可商用] 运行: 直接运行 imtApi.py 打包:切换到imt脚本目录,执行打包命令: pyinstaller --onefile imtApi.py这个应用程序可以帮助你进行茅台自动化配置。以下是一些使用…

【Laravel】06 数据库迁移工具migration

【Laravel】06 数据库迁移工具migration 1.migration文件目录2. 举例 1.migration文件目录 2. 举例 (base) ➜ example-app php artisan migrate Migration table created successfully. Migrating: 2014_10_12_000000_create_users_table Migrated: 2014_10_12_000000_crea…

Java基础学习: JDK动态代理

文章目录 一、什么是JDK动态代理二、JDK动态代理的特点三、JDK动态代理类如何使用四、JDK动态代理原理分析1、创建代理对象2、生成代理类 一、什么是JDK动态代理 JDK动态代理是Java提供的一种动态生成代理类和代理对象的技术。它主要利用Java的反射机制实现,在运行…

算法学习——LeetCode力扣动态规划篇10(583. 两个字符串的删除操作、72. 编辑距离、647. 回文子串、516. 最长回文子序列)

算法学习——LeetCode力扣动态规划篇10 583. 两个字符串的删除操作 583. 两个字符串的删除操作 - 力扣(LeetCode) 描述 给定两个单词 word1 和 word2 ,返回使得 word1 和 word2 相同所需的最小步数。 每步 可以删除任意一个字符串中的一个…

2010-2021年各省碳排放测算数据(含原始数据+计算过程+结果)

2010-2021年各省碳排放测算数据(含原始数据计算过程结果) 1、时间:2010-2021年 2、指标:原煤(万吨)、原煤(万吨CO2)、焦炭(万吨)、焦炭(万吨CO2)、汽油(万吨)、汽油(万吨CO2)、煤油(万吨)、煤油(万吨CO2)、柴油(万吨)、柴油(万吨…

vivado XVC 服务器实现

XVC 服务器实现 您需要实现 XVC 协议才能在相应的处理器上创建 XVC 服务器。 XVC 协议 XVC 协议允许 Vivado IDE 通过以太网向嵌入式系统发送 JTAG 命令 , 以便对目标赛灵思器件进行编程和 / 或调试。这样 即可采用任意供应商解决方案来对赛灵思器件进行调…

《Java面试自救指南》(专题一)操作系统

文章目录 力推操作系统的三门神课操作系统的作用和功能线程、进程和协程的区别并行与并发的区别什么是文件描述符操作系统内核态和用户态的区别用户态切换到内核态的方式大内核和微内核的区别用户级线程和内核级线程的区别线程的七态模型进程调度算法有哪些进程间通信的七种方式…

Python之Opencv进阶教程(2):统计图片灰度级别的像素数量

1、什么是灰度像素数量 在OpenCV中,可以使用**cv2.calcHist()**函数来计算图像的直方图。直方图是一种图形统计表,用于表示图像中每个灰度级别(或颜色通道)的像素数量或密度分布。以下是一个示例代码,演示了如何使用O…