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

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

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

相关文章

端午搞个零花钱,轻松赚取创业的第一桶金!2024最受欢迎的创业项目,2024新的创业机会

好好的端午节&#xff0c; 净给我添堵&#xff01; 本来我打算在端午节愉快的玩耍&#xff0c; 结果一大早起床却看到舍友在给一堆设备充电&#xff0c; 然后装的整整齐齐&#xff0c; 满满一书包。 我好奇他小子这是要干嘛&#xff1f; 不会是打算今天回去给亲朋好友准备…

Java IO流详解

IO流原理 IO流是基于流的概念&#xff0c;它将数据的输入和输出看作是一个连续的流。数据从一个地方流向另一个地方&#xff0c;流的方向可以是输入&#xff08;读取数据&#xff09;或输出&#xff08;写入数据&#xff09;。 IO流提供了一组丰富的类和方法来实现不同类型的…

【动态规划-BM79 打家劫舍(二)】

题目 BM79 打家劫舍(二) 描述 你是一个经验丰富的小偷&#xff0c;准备偷沿湖的一排房间&#xff0c;每个房间都存有一定的现金&#xff0c;为了防止被发现&#xff0c;你不能偷相邻的两家&#xff0c;即&#xff0c;如果偷了第一家&#xff0c;就不能再偷第二家&#xff0c;如…

Search用法Python:深入探索搜索功能的应用与技巧

Search用法Python&#xff1a;深入探索搜索功能的应用与技巧 在Python编程中&#xff0c;搜索功能是一项至关重要的技能&#xff0c;它能够帮助我们快速定位并处理数据。然而&#xff0c;对于初学者来说&#xff0c;如何高效地使用搜索功能可能会带来一些困惑。本文将从四个方…

全面分析找不到msvcr120.dll,无法继续执行程序问题

在计算机使用过程中&#xff0c;我们可能会遇到一些错误提示&#xff0c;其中“找不到msvcr120.dll”就是常见的一种。那么&#xff0c;找不到msvcr120.dll是什么意思呢&#xff1f; 一&#xff0c;msvcr120.dll文件概述 msvcr120.dll 是 Microsoft Visual C Redistributable …

C++教程(003):运算符

3 运算符 作用&#xff1a;用于执行代码的运算 我们主要讲解以下运算符&#xff1a; 运算符类型作用算术运算符用于处理四则运算赋值运算符用于将表达式的值赋给变量比较运算符用于表达式的比较&#xff0c;并返回一个真值或假值逻辑运算符用于根据表达式的值返回真值或假值 …

详解 Flink 的时间语义和 watermark

一、Flink 时间语义类型 Event Time&#xff1a;是事件创建的时间。它通常由事件中的时间戳描述&#xff0c;例如采集的日志数据中&#xff0c;每一条日志都会记录自己的生成时间&#xff0c;Flink 通过时间戳分配器访问事件时间戳Ingestion Time &#xff1a;是数据进入 Flink…

el-table合计行前置在首行,自定义合计行方法

背景 el-table原生合计行是在标签内增加show-summary属性&#xff0c;在表尾实现设计合计&#xff0c;且只对表格当前页面显示的列数据进行合计。element-UI效果如下图所示。 现要求在首行显示合计行&#xff0c;并自定义合计逻辑实现如下效果。 图示表格中&#xff0c;成本…

【渗透测试】DC-1靶机实战(上)漏洞扫描获取反弹shell

目录 一、范围界定 二、信息收集 三、目标识别 1&#xff09;主机发现 2&#xff09;端口扫描 四. 服务枚举 1&#xff09;网站首页 2&#xff09;Web指纹识别 3&#xff09;nikto报告 4&#xff09;robots.txt 5&#xff09;UPGRADE.txt 五. 漏洞映射 1&#xff…

万字长文|OpenAI模型规范(全文)

本文是继《OpenAI模型规范概览》之后对OpenAI Model Spec的详细描述&#xff0c;希望能对各位从事大模型及RLHF研究的朋友有帮助。万字长文&#xff0c;建议收藏后阅读。 一、概述 在AI的世界里&#xff0c;确保技术的行为符合我们的期望至关重要。OpenAI最近发布了一份名为Mo…

java里面封装https请求工具类2

其他写法 https://blog.csdn.net/weixin_44372802/article/details/132620809?spm1001.2014.3001.5501 encodeJson 是请求参数的密文格式&#xff08;大公司都是要对请求参数加密的&#xff09; ResponseBean 是自己或者对方定义的返回内容参数 public ResponseBean sendByEnc…

今天是放假带娃的一天

端午节放假第一天 早上5点半宝宝就咔咔乱叫了&#xff0c;几乎每天都这个点醒&#xff0c;准时的很&#xff0c;估计他是个勤奋的娃吧&#xff0c;要早起锻炼婴语&#xff0c;哈哈 醒来后做饭、洗锅、洗宝宝的衣服、给他吃D3&#xff0c;喂200ml奶粉、给他洗澡、哄睡&#xff0…

代码随想录算法训练营第二十二天

题目&#xff1a;216. 组合总和 III 这道题和上道题非常类似&#xff0c;大体框架一样只不过修改一下终止条件而已 值得注意的是其中的剪枝条件的设置 一是靠现有的元素和已经大于目标和的话就提前终止&#xff0c;另一个是其中循环那个剪枝可以记住 i < n - (k - path.s…

YOLOv8改进 | 卷积模块 | 在主干网络中添加/替换蛇形卷积Dynamic Snake Convolution

&#x1f4a1;&#x1f4a1;&#x1f4a1;本专栏所有程序均经过测试&#xff0c;可成功执行&#x1f4a1;&#x1f4a1;&#x1f4a1; 蛇形动态卷积是一种新型的卷积操作&#xff0c;旨在提高对细长和弯曲的管状结构的特征提取能力。它通过自适应地调整卷积核的权重&#xff0…

【每日刷题】Day59

【每日刷题】Day59 &#x1f955;个人主页&#xff1a;开敲&#x1f349; &#x1f525;所属专栏&#xff1a;每日刷题&#x1f34d; &#x1f33c;文章目录&#x1f33c; 1. 1103. 分糖果 II - 力扣&#xff08;LeetCode&#xff09; 2. 1051. 高度检查器 - 力扣&#xff08…

电子纸在日化行业的全新应用

电子纸在日化行业的全新应用 项目背景 在一日化龙头企业他们的洗衣粉产线在AGV小车取料到运输到产品包装工序时&#xff0c;因为取料粉车无明显区分标识&#xff0c;但是产品系列有十大类。在未采用晨控电子纸之前现场采用一个转盘分为十个区域&#xff0c;取料工序上方会有一…

Stream与MLC测试CPU内存DDR5的原理与方法详解

在高性能计算和服务器领域&#xff0c;内存性能是决定整体系统性能的关键因素之一&#xff0c;特别是随着DDR5内存的普及&#xff0c;其更高的带宽和更低的延迟特性使得内存性能测试变得更加重要。本文将详细介绍使用Stream和MLC两种工具对CPU内存DDR5进行性能测试的原理和实施…

我也想拥有一个漂亮的网站

我也想拥有一个漂亮的网站 别人的公司几乎每个都有好看的网站&#xff0c;我也想拥有 如今在互联网上网站的存在已经非常的不稀奇了&#xff0c;可以在各大搜索引擎上面查到大量的网站&#xff0c;各行各业的网站都有&#xff0c;千奇百态&#xff0c;什么风格的网站都有…

整理好了!2024年最常见 20 道分布式、微服务面试题(四)

上一篇地址&#xff1a;整理好了&#xff01;2024年最常见 20 道分布式、微服务面试题&#xff08;三&#xff09;-CSDN博客 七、单体应用与微服务架构有何不同&#xff1f; 单体应用&#xff08;Monolithic Application&#xff09;和微服务架构&#xff08;Microservices A…

Transformer 内部原理学习

Transformer 内部原理 想象一下&#xff0c;Transformer 是一个超级智能的团队&#xff0c;每个成员&#xff08;模块&#xff09;都有特定的职责&#xff0c;共同完成一个复杂的任务&#xff0c;比如理解一篇文章或翻译一句话。下面&#xff0c;我们逐步拆解这个团队的工作流…