【python】OpenCV—Blob Detection(11)

在这里插入图片描述

学习来自OpenCV基础(10)使用OpenCV进行Blob检测

文章目录

  • 1、cv2.SimpleBlobDetector_create 中文文档
  • 2、默认 parameters
  • 3、配置 parameters
  • 附录——cv2.drawKeypoints

1、cv2.SimpleBlobDetector_create 中文文档

cv2.SimpleBlobDetector_create 是 OpenCV 库中用于创建斑点检测器(Blob Detector)的函数。斑点检测是计算机视觉中的一个重要任务,用于检测图像中的小而明亮的区域,通常称为斑点或斑块。下面是 cv2.SimpleBlobDetector_create 函数的中文文档,包括其参数和用法:

一、函数概述
cv2.SimpleBlobDetector_create([params])

  • 功能:创建一个 SimpleBlobDetector 对象,用于在图像中检测斑点。
  • 参数:
    params(可选):一个 SimpleBlobDetector_Params 对象,用于设置斑点检测器的参数。如果未提供,则使用默认参数。

二、参数详解

SimpleBlobDetector_Params 对象包含以下参数,用于调整斑点检测器的行为:

阈值相关参数:

  • minThreshold:用于阈值处理的最小值。
  • maxThreshold:用于阈值处理的最大值。
  • thresholdStep:在 minThreshold 和 maxThreshold 之间递增的步长。

Blob大小参数:

  • filterByArea:是否按斑点面积过滤斑点。
  • minArea:用于过滤的最小斑点面积
  • maxArea:用于过滤的最大斑点面积

Blob形状参数:

  • filterByCircularity:是否按斑点圆度过滤斑点。
  • minCircularity:用于过滤的最小圆度值(范围从0到1,其中1表示完美的圆)。
  • maxCircularity:用于过滤的最大圆度值。

Blob凸性参数:

  • filterByConvexity:是否按斑点凸性过滤斑点。
  • minConvexity:用于过滤的最小凸性值(范围从0到1,其中1表示完全凸的斑点)。

Blob惯性比参数:(它衡量的是一个形状的伸长程度

  • filterByInertia:是否按斑点惯性比过滤斑点。
  • minInertiaRatio:用于过滤的最小惯性比值(范围从0到1)。

其他参数:

  • minRepeatability:斑点检测的最小重复次数(用于去除噪声)。
  • minDistBetweenBlobs:斑点之间的最小距离(用于去除重叠的斑点)。

在这里插入图片描述

2、默认 parameters

import cv2
import numpy as np

im = cv2.imread("C://Users/Administrator/Desktop/1.jpg", cv2.IMREAD_GRAYSCALE)

ver = (cv2.__version__).split('.')
print(ver)  # ['4', '4', '0']

if int(ver[0]) < 3:
    detector = cv2.SimpleBlobDetector()
else:
    detector = cv2.SimpleBlobDetector_create()

# 检测blobs
keypoints = detector.detect(im)

# 用红色圆圈画出检测到的blobs
im_with_keypoints = cv2.drawKeypoints(im, keypoints, np.array([]), (0,0,255), 
                                      cv2.DRAW_MATCHES_FLAGS_DRAW_RICH_KEYPOINTS)

# 结果显示
cv2.imshow("Keypoints", im_with_keypoints)
cv2.waitKey(0)
cv2.destroyAllWindows()

输入图像

请添加图片描述
输出图像

在这里插入图片描述

3、配置 parameters

import cv2
import numpy as np

im = cv2.imread("C://Users/Administrator/Desktop/3.jpg", cv2.IMREAD_GRAYSCALE)


# 设置SimpleBlobDetector参数
params = cv2.SimpleBlobDetector_Params()

# 改变阈值
params.minThreshold = 10
params.maxThreshold = 200

# 根据面积过滤
params.filterByArea = True
params.minArea = 1500

# 根据Circularity过滤
params.filterByCircularity = True
params.minCircularity = 0.1

# 根据Convexity过滤
params.filterByConvexity = True
params.minConvexity = 0.87

# 根据Inertia过滤
params.filterByInertia = True
params.minInertiaRatio = 0.01

# 创建一个带有参数的检测器
ver = (cv2.__version__).split('.')
if int(ver[0]) < 3:
    detector = cv2.SimpleBlobDetector(params)
else:
    detector = cv2.SimpleBlobDetector_create(params)

# 检测blobs
keypoints = detector.detect(im)

# 用红色圆圈画出检测到的blobs
im_with_keypoints = cv2.drawKeypoints(im, keypoints, np.array([]), (0, 0, 255),
                                      cv2.DRAW_MATCHES_FLAGS_DRAW_RICH_KEYPOINTS)

# 结果显示
cv2.imshow("Keypoints", im_with_keypoints)
cv2.waitKey(0)

输入图片
在这里插入图片描述

输出图片

在这里插入图片描述

附录——cv2.drawKeypoints

函数定义

  • cv2.drawKeypoints(image, keypoints, outImage[, color[, flags]])

参数

  • image:原始图片,数据类型应为 8-bit 单通道或三通道图像。

  • keypoints:关键点列表,通常是由特征点检测算法(如 SIFT、SURF、ORB 等)生成。

  • outImage:输出图像,绘制关键点后的图像将保存在这个变量中。可以设置为原始图像,以在原始图像上直接绘制关键点。

  • color:颜色设置,用于绘制关键点的颜色。它是一个包含三个整数值的元组,分别代表蓝色、绿色和红色的强度,取值范围在 0-255 之间。例如,(255, 0, 0) 表示红色。

  • flags:绘图功能的标识设置,用于控制关键点的绘制方式。它是一个可选参数,可以设置为以下值之一或它们的组合(通过按位或运算 |):

    • cv2.DRAW_MATCHES_FLAGS_DEFAULT:创建输出图像矩阵,使用现存的输出图像绘制匹配对和特征点,对每一个关键点只绘制中间点。
    • cv2.DRAW_MATCHES_FLAGS_DRAW_OVER_OUTIMG:不创建输出图像矩阵,而是在输出图像上绘制匹配对。
    • cv2.DRAW_MATCHES_FLAGS_DRAW_RICH_KEYPOINTS:对每一个特征点绘制带大小和方向的关键点图形。
    • cv2.DRAW_MATCHES_FLAGS_NOT_DRAW_SINGLE_POINTS:单点的特征点不被绘制。
  • 返回值
    该函数没有直接的返回值,但会将绘制了关键点的图像保存在 outImage 参数中。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

平衡二叉树详解

目录 平衡二叉树的定义 平衡二叉树的基本操作 查找 插入 AVL树的建立 平衡二叉树的定义 平衡二叉树仍然是一棵二叉查找树&#xff0c;只是在其基础上增加了平衡的要求&#xff0c;也就是其左右子树的高度之差的绝对值不超过1。 在定义树的结构时需要加入一个变量height&…

外卖APP与外卖小程序开发:从源码到上线的全流程

本文&#xff0c;小编将详细介绍外卖系统与小程序开发的全过程&#xff0c;从源码的编写到系统的上线&#xff0c;为开发者提供全面的指导。 一、需求规划 用户需要一个简单易用的点餐界面&#xff0c;商家需要管理菜单、订单和配送&#xff0c;后台管理则需要监控系统运行状况…

韩顺平0基础学java——第19天

p396-406 final关键字 1.final修饰的为“常量”&#xff0c;需要给初始值。1可以直接定义时赋值&#xff0c;2在构造器中&#xff0c;3在代码块中。 注意静态代码块只能访问静态变量。 2.如果final修饰的关键字是静态的&#xff0c;那就不能在构造器中赋值&#xff0c;只能…

linux经典例题编程

编写Shell脚本&#xff0c;计算1~100的和 首先vi 1.sh,创建一个名为1.sh的脚本&#xff0c;然后赋予这个脚本权限&#xff0c;使用命令chmod 755 1.sh&#xff0c;然后就可以在脚本中写程序&#xff0c;然后运行。 shell脚本内容 运行结果&#xff1a; 编写Shell脚本&#xf…

人工智能在交通与物流领域的普及及应用

文章目录 &#x1f40b;引言 &#x1f40b;自动驾驶 &#x1f988;自动驾驶汽车 &#x1f421;应用现状 &#x1f421;技术实现 &#x1f421;实现过程及代码 &#x1f40b;智能交通管理 &#x1f988;应用现状 &#x1f988;技术实现 &#x1f988;实现过程及代码 &…

Polar Web【中等】反序列化

Polar Web【中等】反序列化 Contents Polar Web【中等】反序列化思路&探索EXPPHP生成PayloadGET传递参数 运行&总结 思路&探索 一个经典的反序列化问题&#xff0c;本文采用PHP代码辅助生成序列字符串的方式生成 Payload 来进行手动渗透。 打开站点&#xff0c;分析…

2024 vite 静态 scp2 自动化部署

1、导入库 npm install scp2 // 自动化部署 npm install chalk // 控制台输出的语句 npm install ora2、核心代码 创建文件夹放在主目录下的 deploy/index.js 复制粘贴以下代码&#xff1a; import client from scp2; import chalk from chalk; import ora from ora;const s…

聊一聊大数据需求的流程

大致的流程&#xff1a;需求对接、口径梳理、数据开发、任务发布、任务监控、任务保障 流程图 startuml skinparam packageStyle rectangleactor 需求方 participant 数据BP as 数据组 participant 离线数仓 participant 实时数仓需求方 -> 数据组: 提出需求 数据组 -> …

数据挖掘--认识数据

数据挖掘--引论 数据挖掘--认识数据 数据挖掘--数据预处理 数据挖掘--数据仓库与联机分析处理 数据挖掘--挖掘频繁模式、关联和相关性&#xff1a;基本概念和方法 数据挖掘--分类 数据挖掘--聚类分析&#xff1a;基本概念和方法 数据对象与属性类型 属性&#xff1a;是一…

STM32关于uc/OS-III的多任务程序

目录 一、UCOS-III源码获取 二、HAL库工程的建立 1.RCC配置 2.SYS配置 3.USART1配置 4.GPIO配置 5.时钟配置 6.项目配置 三、KEil文件添加 1.文件复制 2.KEil工程添加 3.添加文件路径 四、代码修改 1. 2.修改文件app_cfg.h中代码 3.修改include.h的代码 4.修改…

数据库 | 关系数据库设计

第七章 1.简述数据库的设计阶段&#xff1f;&#xff08;简要回答数据库设计步骤&#xff1f;&#xff09;&#xff08;&#xff08;数据库设计有哪几个阶段&#xff1f;&#xff09; 需求分析、概念结构设计、逻辑结构设计、物理结构设计、数据库的实施、数据库的运行和维护…

【国产NI替代】SMU 源测量仪:源测量单元平台主要用于半导体、传感器、模组等 IVR 测试测量

• 集 5 台仪器 (数字万用表、电压源、电流源、电子负载和脉冲发生器) 功能于⼀体 • 典型输出源及测量精度 02%&#xff0c;支持直流/脉冲输出模式 • 脉冲输出模式&#xff0c;最⼩脉冲宽度 100 us &#xff0c;上升时间 10 us • 具有 pA 级分辨率高精度源&#xff0c;且…

全自动饲料机械成套设备:养殖好帮手

全自动饲料机械成套设备是一套能够自动完成饲料生产全过程的机械设备。从原料的粉碎、混合、制粒&#xff0c;到成品的包装、储存&#xff0c;再到生产过程的监控与管理&#xff0c;全部实现自动化操作。减轻了人工劳动强度&#xff0c;提高了生产效率&#xff0c;同时也保证了…

【ARM Cache 及 MMU 系列文章 6 -- Cache 寄存器 CTR_EL0 | CLIDR | CCSIDR | CSSELR 使用详解 1】

请阅读【ARM Cache 及 MMU/MPU 系列文章专栏导读】 及【嵌入式开发学习必备专栏】 文章目录 Cache 常用寄存器Cache CSSELR 寄存器Cache CSSELR 使用场景Cache CSSELR 操作示例 Cache CLIDR 寄存器LoUU 介绍LoUU 使用 LoUIS 介绍CLIDR 使用 Cache CCSIDR 寄存器Cache CTR_EL0 C…

http协议,tomcat的作用

HTTP 概念:Hyper Text Transfer Protocol&#xff0c;超文本传输协议&#xff0c;规定了浏览器和服务器之间数据传输的规则。 特点: 1.基于TCP协议:面向连接&#xff0c;安全 2. 基于请求-响应模型的:一次请求对应一次响应 3HTTP协议是无状态的协议:对于事务处理没有记忆能…

大模型应用:基于Golang + 大模型构建简易的电商售前对话服务

1.背景 某X互联网电商公司为了解决当前大量用户的售前咨询问题&#xff0c;需要建设一个不需要客服介入的简易电商售前机器人&#xff0c;用于回答用户的售前问题&#xff0c;并给出基本可靠的咨询回答。 当前大模型如gpt、baichuan、文心等均有开放使用的OpenAPI接口&#xf…

单片机+TN901非接触式红外测温设计

摘要 温度测量技术应用十分广泛&#xff0c;而且在现代设备故障检测领域中也是一项非常重要的技术。但在某些应用领域中&#xff0c;要求测量温度用的传感器不能与被测物体相接触&#xff0c;这就需要一种非接触的测温方式来满足上述测温需求。本论文正是应上述实际需求而设计的…

【Autopilot】没有自动添加本地管理员的问题处理

【问题】某公司选用了D记的笔记本电脑&#xff0c;约定出厂就预配置好Autopilot&#xff0c;当时向D记提供了三个信息&#xff1a; 1. M365的租户ID 2. 公司域名信息 3. Group Tag (某公司为跨国公司&#xff0c;通过Group Tag来区分国家&#xff0c;比如CHN-中国&#xff0c;L…

2024 IDEA最新永久使用码教程(2099版)

本篇文章我就来分享一下2024年当前最新版 IntelliJ IDEA 最新注册码&#xff0c;教程如下&#xff0c;可免费永久&#xff0c;亲测有效&#xff0c;适合Windows和Mac。 本教程适用于 J B 全系列产品&#xff0c;包括 Pycharm、IDEA、WebStorm、Phpstorm、Datagrip、RubyMine、…

Web LLM 攻击技术

概述 在ChatGPT问世以来&#xff0c;我也尝试挖掘过ChatGPT的漏洞&#xff0c;不过仅仅发现过一些小问题&#xff1a;无法显示xml的bug和错误信息泄露&#xff0c;虽然也挖到过一些开源LLM的漏洞&#xff0c;比如前段时间发现的Jan的漏洞&#xff0c;但是不得不说传统漏洞越来…