当前位置: 首页 > news >正文

【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 npim = 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 npim = 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 参数中。

相关文章:

【python】OpenCV—Blob Detection(11)

学习来自OpenCV基础&#xff08;10&#xff09;使用OpenCV进行Blob检测 文章目录 1、cv2.SimpleBlobDetector_create 中文文档2、默认 parameters3、配置 parameters附录——cv2.drawKeypoints 1、cv2.SimpleBlobDetector_create 中文文档 cv2.SimpleBlobDetector_create 是 O…...

【C++】 基础复习 | 数据类型,输入,输出流 scanf printf

文章目录 1 基本数据类型1.1 基本数据类型1.2 构造类型1.3 指针类型&#xff08;Pointers&#xff09; 2 基础输入输出2.1 通过输入输出操作符>> <<2.2 通过scanf和printf输入和输出2.2.1 输出printf 函数2.2.2 输出scanf 函数2.2.3 注意事项 1 基本数据类型 了解…...

linux pxe和无人值守

一 PXE和无人值守 pxe c/s模式 允许客户端通过网络从远程服务器&#xff08;服务端&#xff09;下载引导镜像 加载安装文件 实现自动化安装操作系统 无人值守 就是安装选项不需要认为干预 可以自动化实现 pxe的优点 1 规模化 同时装配多台服务器 20多 30台 2 自动化 …...

Questflow借助MongoDB Atlas以AI重新定义未来工作方式

MongoDB客户案例导读 Questflow借助MongoDB Atlas赋能AI员工&#xff0c;助力中小型初创企业自动化工作流程&#xff0c;简化数据分析&#xff0c;提升客户体验&#xff0c;推动AI与员工的协作&#xff0c;重新定义未来工作方式。 协作式AI自动化平台 无需编码即可拥有自己的…...

数值计算精度问题(浮点型和双整型累加精度测试)

这篇博客介绍双整型和浮点数累加精度问题,运动控制轨迹规划公式有大量对时间轴的周期累加过程,如果我们采用浮点数进行累加,势必会影响计算精度。速度的不同 进一步影响位置积分运算。轨迹规划相关问题请参考下面系列文章,这里不再赘述: 1、博途PLC 1200/1500PLC S型速度曲…...

算法训练营day56

题目1&#xff1a;300. 最长递增子序列 - 力扣&#xff08;LeetCode&#xff09; class Solution { public:int lengthOfLIS(vector<int>& nums) {// dp数组含义是第i个数的严格递增子序列的长度// 内层的递推公式就是 取 0 到 i - 1之间最大的dp数组 然后 1vector…...

基于STM32的智能水产养殖系统(二)

TPS5433IDR TPS5433IDR 是一款由德州仪器 (Texas Instruments) 生产的高效降压转换器&#xff08;Buck Converter&#xff09;。它能够将较高的输入电压转换为较低的输出电压&#xff0c;适用于各种电源管理应用。 主要特性 输入电压范围: 5.5V 至 36V输出电压范围: 0.9V 至 …...

[工具探索]富士mini90拍立得使用指南

文章目录 1. 基本功能介绍1.1 相机外观1.2 电池与胶片 2. 设置相机2.1 装入电池2.2 装入胶片 3. 拍摄模式3.1 标准模式3.2 儿童模式3.3 远景模式3.4 双重曝光模式3.5 Bulb&#xff08;B&#xff09;模式3.6 **派对模式**3.7 微距模式3.8 **亮度模式**3.9 **定时拍摄模式**3.10 …...

VMware导入小白分享的MacOS版本之后,无法开机的解决方案

前言 这段时间陆续有小伙伴找到小白&#xff0c;说&#xff1a;导入小白分享的MacOS版本之后&#xff0c;出现无法开机的问题。 遇到这个问题&#xff0c;并不是说明分享版本有问题&#xff0c;因为大部分小伙伴导入之后都没有出现类似的问题&#xff0c;都是导入之后开机&…...

【CSAPP导读】导论

目录 &#x1f308; 前言&#x1f308; &#x1f4c1; 书籍介绍 &#x1f4c1; 阅读路线 &#x1f4c1; 总结 &#x1f308; 前言&#x1f308; 《深入理解计算机系统》书籍是由布赖恩特(Bryant,R.E.)著的一本经典计算机科学教材&#xff0c;常被简称为"CSAPP"&a…...

“新E代弯道王”MAZDA EZ-6亮相2024重庆国际车展

6月7日-6月16日&#xff0c;第二十六届重庆国际车展隆重开幕&#xff0c;合资品牌首款基于纯电平台的新能源轿车MAZDA EZ-6&#xff08;以下称EZ-6&#xff09;领衔长安马自达全系车型亮相N8馆T01展台。车展期间&#xff0c;重庆及周边地区的马自达用户、粉丝、车友可前往长安马…...

【lesson11】客户端backUp类的实现

文章目录 成员变量成员函数backUpgetFileIdentifierisNeedUploadupLoadRunMoudle 成员变量 private:std::string _back_dir;//备份文件夹路径名dataManager* _data;//dataManager指针对象成员函数 backUp backUp(const std::string& back_dir, const std::string& b…...

数据结构--关键路径

事件v1-表示整个工程开始&#xff08;源点&#xff1a;入度为0的顶点&#xff09; 事件v9-表示整个工程结束&#xff08;汇点&#xff1a;出度为0的顶点&#xff09; 关键路径&#xff1a;路径长度最长的路径 求解关键路径问题&#xff08;AOE网&#xff09; 定义四个描述量 …...

SSTI注入漏洞

SSTI注入漏洞 1.SSTI注入概述2.SSTI检测工具3.SSTI利用方法Java基本FreeMarker (Java)ThymeleafSpring Framework (Java)Spring视图操作&#xff08;Java&#xff09;Smarty (PHP)Twig (PHP)Jade (NodeJS)NUNJUCKS (NodeJS)ERB (Ruby)Jinja2 (Python)Mako (Python)ASP 1.SSTI注…...

Day11 - Day15

Day11 - Day15 Day11&#xff08;1998年Text1&#xff09; Perhaps it is humankind’s long suffering at the mercy of flood and drought that makes the idea of forcing the waters to do our bidding so fascinating. 也许正是人类长期在洪水和干旱支配下所遭受的苦难&a…...

启航信息学奥林匹克:青少年NOI学习路线与策略指南

在全球范围内&#xff0c;信息学奥林匹克竞赛&#xff08;NOI&#xff09;不仅是青少年展示编程和算法能力的舞台&#xff0c;更是未来计算机科学家和工程师的摇篮。本文将为志在参加NOI的青少年们提供一条清晰的学习路线和实用的建议&#xff0c;帮助你们在这条充满挑战与机遇…...

易舟云财务软件:数字化时代的财务管家

在数字化浪潮的推动下&#xff0c;财务软件成为了企业提升财务管理效率、实现数字化转型的关键工具。易舟云财务软件&#xff0c;正是这样一款深受企业喜爱的财务管理系统。本文将带你详细了解易舟云财务软件的特点、版本区别以及如何使用它来优化财务工作。 易舟云财务软件的特…...

catia零件装配中通过指南针移动零件

1 将零件导入进来后 2 把指南针移动到零件上 具体移动哪个可以通过模型树点击选中&#xff0c;选中那个就可以移动那个。 这种情况需要注意的是 需要双击选择要移动零件的父节点 如下图&#xff0c;Product2蓝色表示是激活的&#xff0c;这样才可以单击选中下面的零件后通过…...

如何使用免费的 Instant Data Scraper快速抓取网页数据

Instant Data Scraper 是一款非常简单易用的网页数据爬虫工具&#xff0c;你不需要任何代码知识&#xff0c;只需要点几下鼠标&#xff0c;就可以把你想要的数据下载到表格里面。以下是详细的使用步骤&#xff1a; 第一步&#xff1a;安装 Instant Data Scraper 打开谷歌浏览…...

【仿真建模-anylogic】事件之手动定时触发

Author&#xff1a;赵志乾 Date&#xff1a;2024-06-11 Declaration&#xff1a;All Right Reserved&#xff01;&#xff01;&#xff01; 问题&#xff1a;建模过程中经常遇到需要临时规划特定逻辑执行时机的场景&#xff1b; 解决方案&#xff1a;在Event的User Control模…...

Lombok 的 @Data 注解失效,未生成 getter/setter 方法引发的HTTP 406 错误

HTTP 状态码 406 (Not Acceptable) 和 500 (Internal Server Error) 是两类完全不同的错误&#xff0c;它们的含义、原因和解决方法都有显著区别。以下是详细对比&#xff1a; 1. HTTP 406 (Not Acceptable) 含义&#xff1a; 客户端请求的内容类型与服务器支持的内容类型不匹…...

Ascend NPU上适配Step-Audio模型

1 概述 1.1 简述 Step-Audio 是业界首个集语音理解与生成控制一体化的产品级开源实时语音对话系统&#xff0c;支持多语言对话&#xff08;如 中文&#xff0c;英文&#xff0c;日语&#xff09;&#xff0c;语音情感&#xff08;如 开心&#xff0c;悲伤&#xff09;&#x…...

让回归模型不再被异常值“带跑偏“,MSE和Cauchy损失函数在噪声数据环境下的实战对比

在机器学习的回归分析中&#xff0c;损失函数的选择对模型性能具有决定性影响。均方误差&#xff08;MSE&#xff09;作为经典的损失函数&#xff0c;在处理干净数据时表现优异&#xff0c;但在面对包含异常值的噪声数据时&#xff0c;其对大误差的二次惩罚机制往往导致模型参数…...

Aspose.PDF 限制绕过方案:Java 字节码技术实战分享(仅供学习)

Aspose.PDF 限制绕过方案&#xff1a;Java 字节码技术实战分享&#xff08;仅供学习&#xff09; 一、Aspose.PDF 简介二、说明&#xff08;⚠️仅供学习与研究使用&#xff09;三、技术流程总览四、准备工作1. 下载 Jar 包2. Maven 项目依赖配置 五、字节码修改实现代码&#…...

Java求职者面试指南:计算机基础与源码原理深度解析

Java求职者面试指南&#xff1a;计算机基础与源码原理深度解析 第一轮提问&#xff1a;基础概念问题 1. 请解释什么是进程和线程的区别&#xff1f; 面试官&#xff1a;进程是程序的一次执行过程&#xff0c;是系统进行资源分配和调度的基本单位&#xff1b;而线程是进程中的…...

GO协程(Goroutine)问题总结

在使用Go语言来编写代码时&#xff0c;遇到的一些问题总结一下 [参考文档]&#xff1a;https://www.topgoer.com/%E5%B9%B6%E5%8F%91%E7%BC%96%E7%A8%8B/goroutine.html 1. main()函数默认的Goroutine 场景再现&#xff1a; 今天在看到这个教程的时候&#xff0c;在自己的电…...

tomcat入门

1 tomcat 是什么 apache开发的web服务器可以为java web程序提供运行环境tomcat是一款高效&#xff0c;稳定&#xff0c;易于使用的web服务器tomcathttp服务器Servlet服务器 2 tomcat 目录介绍 -bin #存放tomcat的脚本 -conf #存放tomcat的配置文件 ---catalina.policy #to…...

通过 Ansible 在 Windows 2022 上安装 IIS Web 服务器

拓扑结构 这是一个用于通过 Ansible 部署 IIS Web 服务器的实验室拓扑。 前提条件&#xff1a; 在被管理的节点上安装WinRm 准备一张自签名的证书 开放防火墙入站tcp 5985 5986端口 准备自签名证书 PS C:\Users\azureuser> $cert New-SelfSignedCertificate -DnsName &…...

GraphQL 实战篇:Apollo Client 配置与缓存

GraphQL 实战篇&#xff1a;Apollo Client 配置与缓存 上一篇&#xff1a;GraphQL 入门篇&#xff1a;基础查询语法 依旧和上一篇的笔记一样&#xff0c;主实操&#xff0c;没啥过多的细节讲解&#xff0c;代码具体在&#xff1a; https://github.com/GoldenaArcher/graphql…...

React从基础入门到高级实战:React 实战项目 - 项目五:微前端与模块化架构

React 实战项目&#xff1a;微前端与模块化架构 欢迎来到 React 开发教程专栏 的第 30 篇&#xff01;在前 29 篇文章中&#xff0c;我们从 React 的基础概念逐步深入到高级技巧&#xff0c;涵盖了组件设计、状态管理、路由配置、性能优化和企业级应用等核心内容。这一次&…...