【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基础(10)使用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 指针类型(Pointers) 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模式 允许客户端通过网络从远程服务器(服务端)下载引导镜像 加载安装文件 实现自动化安装操作系统 无人值守 就是安装选项不需要认为干预 可以自动化实现 pxe的优点 1 规模化 同时装配多台服务器 20多 30台 2 自动化 …...

Questflow借助MongoDB Atlas以AI重新定义未来工作方式
MongoDB客户案例导读 Questflow借助MongoDB Atlas赋能AI员工,助力中小型初创企业自动化工作流程,简化数据分析,提升客户体验,推动AI与员工的协作,重新定义未来工作方式。 协作式AI自动化平台 无需编码即可拥有自己的…...
数值计算精度问题(浮点型和双整型累加精度测试)
这篇博客介绍双整型和浮点数累加精度问题,运动控制轨迹规划公式有大量对时间轴的周期累加过程,如果我们采用浮点数进行累加,势必会影响计算精度。速度的不同 进一步影响位置积分运算。轨迹规划相关问题请参考下面系列文章,这里不再赘述: 1、博途PLC 1200/1500PLC S型速度曲…...
算法训练营day56
题目1:300. 最长递增子序列 - 力扣(LeetCode) class Solution { public:int lengthOfLIS(vector<int>& nums) {// dp数组含义是第i个数的严格递增子序列的长度// 内层的递推公式就是 取 0 到 i - 1之间最大的dp数组 然后 1vector…...

基于STM32的智能水产养殖系统(二)
TPS5433IDR TPS5433IDR 是一款由德州仪器 (Texas Instruments) 生产的高效降压转换器(Buck Converter)。它能够将较高的输入电压转换为较低的输出电压,适用于各种电源管理应用。 主要特性 输入电压范围: 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(B)模式3.6 **派对模式**3.7 微距模式3.8 **亮度模式**3.9 **定时拍摄模式**3.10 …...

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

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

“新E代弯道王”MAZDA EZ-6亮相2024重庆国际车展
6月7日-6月16日,第二十六届重庆国际车展隆重开幕,合资品牌首款基于纯电平台的新能源轿车MAZDA EZ-6(以下称EZ-6)领衔长安马自达全系车型亮相N8馆T01展台。车展期间,重庆及周边地区的马自达用户、粉丝、车友可前往长安马…...
【lesson11】客户端backUp类的实现
文章目录 成员变量成员函数backUpgetFileIdentifierisNeedUploadupLoadRunMoudle 成员变量 private:std::string _back_dir;//备份文件夹路径名dataManager* _data;//dataManager指针对象成员函数 backUp backUp(const std::string& back_dir, const std::string& b…...

数据结构--关键路径
事件v1-表示整个工程开始(源点:入度为0的顶点) 事件v9-表示整个工程结束(汇点:出度为0的顶点) 关键路径:路径长度最长的路径 求解关键路径问题(AOE网) 定义四个描述量 …...
SSTI注入漏洞
SSTI注入漏洞 1.SSTI注入概述2.SSTI检测工具3.SSTI利用方法Java基本FreeMarker (Java)ThymeleafSpring Framework (Java)Spring视图操作(Java)Smarty (PHP)Twig (PHP)Jade (NodeJS)NUNJUCKS (NodeJS)ERB (Ruby)Jinja2 (Python)Mako (Python)ASP 1.SSTI注…...
Day11 - Day15
Day11 - Day15 Day11(1998年Text1) 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学习路线与策略指南
在全球范围内,信息学奥林匹克竞赛(NOI)不仅是青少年展示编程和算法能力的舞台,更是未来计算机科学家和工程师的摇篮。本文将为志在参加NOI的青少年们提供一条清晰的学习路线和实用的建议,帮助你们在这条充满挑战与机遇…...

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

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

如何使用免费的 Instant Data Scraper快速抓取网页数据
Instant Data Scraper 是一款非常简单易用的网页数据爬虫工具,你不需要任何代码知识,只需要点几下鼠标,就可以把你想要的数据下载到表格里面。以下是详细的使用步骤: 第一步:安装 Instant Data Scraper 打开谷歌浏览…...
【仿真建模-anylogic】事件之手动定时触发
Author:赵志乾 Date:2024-06-11 Declaration:All Right Reserved!!! 问题:建模过程中经常遇到需要临时规划特定逻辑执行时机的场景; 解决方案:在Event的User Control模…...

iOS 26 携众系统重磅更新,但“苹果智能”仍与国行无缘
美国西海岸的夏天,再次被苹果点燃。一年一度的全球开发者大会 WWDC25 如期而至,这不仅是开发者的盛宴,更是全球数亿苹果用户翘首以盼的科技春晚。今年,苹果依旧为我们带来了全家桶式的系统更新,包括 iOS 26、iPadOS 26…...

LeetCode - 394. 字符串解码
题目 394. 字符串解码 - 力扣(LeetCode) 思路 使用两个栈:一个存储重复次数,一个存储字符串 遍历输入字符串: 数字处理:遇到数字时,累积计算重复次数左括号处理:保存当前状态&a…...
鱼香ros docker配置镜像报错:https://registry-1.docker.io/v2/
使用鱼香ros一件安装docker时的https://registry-1.docker.io/v2/问题 一键安装指令 wget http://fishros.com/install -O fishros && . fishros出现问题:docker pull 失败 网络不同,需要使用镜像源 按照如下步骤操作 sudo vi /etc/docker/dae…...
A2A JS SDK 完整教程:快速入门指南
目录 什么是 A2A JS SDK?A2A JS 安装与设置A2A JS 核心概念创建你的第一个 A2A JS 代理A2A JS 服务端开发A2A JS 客户端使用A2A JS 高级特性A2A JS 最佳实践A2A JS 故障排除 什么是 A2A JS SDK? A2A JS SDK 是一个专为 JavaScript/TypeScript 开发者设计的强大库ÿ…...
C++课设:简易日历程序(支持传统节假日 + 二十四节气 + 个人纪念日管理)
名人说:路漫漫其修远兮,吾将上下而求索。—— 屈原《离骚》 创作者:Code_流苏(CSDN)(一个喜欢古诗词和编程的Coder😊) 专栏介绍:《编程项目实战》 目录 一、为什么要开发一个日历程序?1. 深入理解时间算法2. 练习面向对象设计3. 学习数据结构应用二、核心算法深度解析…...
LRU 缓存机制详解与实现(Java版) + 力扣解决
📌 LRU 缓存机制详解与实现(Java版) 一、📖 问题背景 在日常开发中,我们经常会使用 缓存(Cache) 来提升性能。但由于内存有限,缓存不可能无限增长,于是需要策略决定&am…...

【网络安全】开源系统getshell漏洞挖掘
审计过程: 在入口文件admin/index.php中: 用户可以通过m,c,a等参数控制加载的文件和方法,在app/system/entrance.php中存在重点代码: 当M_TYPE system并且M_MODULE include时,会设置常量PATH_OWN_FILE为PATH_APP.M_T…...

通过MicroSip配置自己的freeswitch服务器进行调试记录
之前用docker安装的freeswitch的,启动是正常的, 但用下面的Microsip连接不上 主要原因有可能一下几个 1、通过下面命令可以看 [rootlocalhost default]# docker exec -it freeswitch fs_cli -x "sofia status profile internal"Name …...
redis和redission的区别
Redis 和 Redisson 是两个密切相关但又本质不同的技术,它们扮演着完全不同的角色: Redis: 内存数据库/数据结构存储 本质: 它是一个开源的、高性能的、基于内存的 键值存储数据库。它也可以将数据持久化到磁盘。 核心功能: 提供丰…...

篇章二 论坛系统——系统设计
目录 2.系统设计 2.1 技术选型 2.2 设计数据库结构 2.2.1 数据库实体 1. 数据库设计 1.1 数据库名: forum db 1.2 表的设计 1.3 编写SQL 2.系统设计 2.1 技术选型 2.2 设计数据库结构 2.2.1 数据库实体 通过需求分析获得概念类并结合业务实现过程中的技术需要&#x…...