当前位置: 首页 > 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模…...

【大模型RAG】拍照搜题技术架构速览:三层管道、两级检索、兜底大模型

摘要 拍照搜题系统采用“三层管道&#xff08;多模态 OCR → 语义检索 → 答案渲染&#xff09;、两级检索&#xff08;倒排 BM25 向量 HNSW&#xff09;并以大语言模型兜底”的整体框架&#xff1a; 多模态 OCR 层 将题目图片经过超分、去噪、倾斜校正后&#xff0c;分别用…...

Qt/C++开发监控GB28181系统/取流协议/同时支持udp/tcp被动/tcp主动

一、前言说明 在2011版本的gb28181协议中&#xff0c;拉取视频流只要求udp方式&#xff0c;从2016开始要求新增支持tcp被动和tcp主动两种方式&#xff0c;udp理论上会丢包的&#xff0c;所以实际使用过程可能会出现画面花屏的情况&#xff0c;而tcp肯定不丢包&#xff0c;起码…...

day52 ResNet18 CBAM

在深度学习的旅程中&#xff0c;我们不断探索如何提升模型的性能。今天&#xff0c;我将分享我在 ResNet18 模型中插入 CBAM&#xff08;Convolutional Block Attention Module&#xff09;模块&#xff0c;并采用分阶段微调策略的实践过程。通过这个过程&#xff0c;我不仅提升…...

高频面试之3Zookeeper

高频面试之3Zookeeper 文章目录 高频面试之3Zookeeper3.1 常用命令3.2 选举机制3.3 Zookeeper符合法则中哪两个&#xff1f;3.4 Zookeeper脑裂3.5 Zookeeper用来干嘛了 3.1 常用命令 ls、get、create、delete、deleteall3.2 选举机制 半数机制&#xff08;过半机制&#xff0…...

相机从app启动流程

一、流程框架图 二、具体流程分析 1、得到cameralist和对应的静态信息 目录如下: 重点代码分析: 启动相机前,先要通过getCameraIdList获取camera的个数以及id,然后可以通过getCameraCharacteristics获取对应id camera的capabilities(静态信息)进行一些openCamera前的…...

MySQL用户和授权

开放MySQL白名单 可以通过iptables-save命令确认对应客户端ip是否可以访问MySQL服务&#xff1a; test: # iptables-save | grep 3306 -A mp_srv_whitelist -s 172.16.14.102/32 -p tcp -m tcp --dport 3306 -j ACCEPT -A mp_srv_whitelist -s 172.16.4.16/32 -p tcp -m tcp -…...

sipsak:SIP瑞士军刀!全参数详细教程!Kali Linux教程!

简介 sipsak 是一个面向会话初始协议 (SIP) 应用程序开发人员和管理员的小型命令行工具。它可以用于对 SIP 应用程序和设备进行一些简单的测试。 sipsak 是一款 SIP 压力和诊断实用程序。它通过 sip-uri 向服务器发送 SIP 请求&#xff0c;并检查收到的响应。它以以下模式之一…...

安宝特案例丨Vuzix AR智能眼镜集成专业软件,助力卢森堡医院药房转型,赢得辉瑞创新奖

在Vuzix M400 AR智能眼镜的助力下&#xff0c;卢森堡罗伯特舒曼医院&#xff08;the Robert Schuman Hospitals, HRS&#xff09;凭借在无菌制剂生产流程中引入增强现实技术&#xff08;AR&#xff09;创新项目&#xff0c;荣获了2024年6月7日由卢森堡医院药剂师协会&#xff0…...

Git常用命令完全指南:从入门到精通

Git常用命令完全指南&#xff1a;从入门到精通 一、基础配置命令 1. 用户信息配置 # 设置全局用户名 git config --global user.name "你的名字"# 设置全局邮箱 git config --global user.email "你的邮箱example.com"# 查看所有配置 git config --list…...

Proxmox Mail Gateway安装指南:从零开始配置高效邮件过滤系统

&#x1f49d;&#x1f49d;&#x1f49d;欢迎莅临我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐&#xff1a;「storms…...