首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何正确使用Feature2D (如SimpleBlobDetector)?(Python + OpenCV)

Feature2D是OpenCV中的一个类,它是用于特征提取和描述的基类。在Python中,我们可以使用Feature2D的派生类SimpleBlobDetector来进行简单的斑点检测。

使用Feature2D(如SimpleBlobDetector)的正确步骤如下:

  1. 导入必要的库和模块:import cv2 import numpy as np
  2. 读取图像:image = cv2.imread('image.jpg', cv2.IMREAD_GRAYSCALE)
  3. 创建SimpleBlobDetector对象并设置参数:params = cv2.SimpleBlobDetector_Params() # 设置阈值范围,用于过滤斑点的大小 params.minThreshold = 10 params.maxThreshold = 200 # 设置斑点的面积范围 params.filterByArea = True params.minArea = 100 # 创建SimpleBlobDetector对象 detector = cv2.SimpleBlobDetector_create(params)
  4. 检测斑点:# 检测斑点 keypoints = detector.detect(image) # 绘制检测到的斑点 image_with_keypoints = cv2.drawKeypoints(image, keypoints, np.array([]), (0, 0, 255), cv2.DRAW_MATCHES_FLAGS_DRAW_RICH_KEYPOINTS)
  5. 显示结果:cv2.imshow("Blob Detection", image_with_keypoints) cv2.waitKey(0) cv2.destroyAllWindows()

在上述代码中,我们首先导入了必要的库和模块。然后,我们使用cv2.imread函数读取了一张灰度图像。接下来,我们创建了一个SimpleBlobDetector_Params对象,并设置了一些参数,如阈值范围和斑点的面积范围。然后,我们使用这些参数创建了一个SimpleBlobDetector对象。最后,我们使用detector.detect函数检测斑点,并使用cv2.drawKeypoints函数绘制检测到的斑点。最后,我们使用cv2.imshow函数显示结果。

推荐的腾讯云相关产品和产品介绍链接地址:

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

OpenCV 3.1.0中特征检测与描述算法接口改动

OpenCV从 2.4.x升级到3.x中有很多代码重构和性能提高,还有API接口的整合,以Feature2D及其扩展模块的特征检测与描述为例,在OpenCV2.4.x中可以通过FeatureDetector...但是到了OpenCV3.1.0中如果你还是这么用,VS预编译就会报告说FeatureDetector::create()方法不存在,原因是OpenCV在最新的3.1.0版本中已经去掉了该方法,对所有特征提取的方法进行了重新梳理并且出现了几种新的特征检测与描述方法...- ORB: detector + descriptor - MSER: detector - FAST: detector - AGAST: detector - GFFT: detector - SimpleBlobDetector...表示该特征可以作为检测器生成KeyPoint数组vector对象 descriptor 表示该特征可以从KeyPoint结果得到描述子Mat对象 detector+descriptor 表示该特征二者皆可 那么问题来了使用...OpenCV 3.1.0的版本如何调用这些API接口实现图像特征点检测与描述子生成。

1.4K80

python使用opencv如何保存图片_OpenCV Python 保存图片

本示例使用OpenCV版本是:4.1.1 运行Python的编辑器:Jupyter notebook 示例目的 通过无损和有损的方式进行图片保存。...实现代码 1,加载图片 import cv2 # 加载OpenCV img = cv2.imread(“dashen.jpeg”) # 读取/加载 图片 2,把图片保存为PNG格式 使用无损的方式保存成...dashen_compressed.png”) # 读取/加载 图片 assert img_png.all() == img.all() # 对比两个图像数据是否一样,如果不一样就会出错 2,把图片保存为JPEG格式 使用压缩的方法保存为...设置编码格式特定参数(paramId_1,paramValue_1,paramId_2,paramValue_2,…),可以用的params列表请参考cv:: ImwriteFlags https://docs.opencv.org...发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

4.1K20
  • Python进阶——如何正确使用yield?

    Python 开发中,yield 关键字的使用其实较为频繁,例如大集合的生成,简化代码结构、协程与并发都会用到它。 但是,你是否真正了解 yield 的运行过程呢?...如果你还不清楚「迭代器」是什么,可以参考我写的这篇文章:Python进阶——迭代器和可迭代对象有什么区别?...这段代码一直循环的原因在于,它无法执行到 j == -1 这个分支里 break 出来,如果我们想让代码执行到这个地方,如何做呢?...在 Python 中,除了使用进程和线程之外,我们还可以使用「协程」来提高代码的运行效率。 什么是协程? 简单来说,由多个程序块组合协作执行的程序,称之为「协程」。...而在 Python使用「协程」,就需要用到 yield 关键字来配合。

    2K10

    Python OpenCV4趣味应用系列(八)---基于SimpleBlobDetector识别骰子点数

    OpenCV提供了一种方便的方法来检测blob并可以根据不同特征对其进行过滤,它就是SimpleBlobDetector,让我们看一个简单的例子: ?...上图中有6个骰子,我们希望自动识别骰子的点数,步骤: ① 自适应阈值二值化凸显骰子外轮廓 ② 轮廓查找过滤截取每个骰子ROI ③ 使用SimpleBlobDetector检测ROI...中的圆,计算点数输出 下面是代码和效果: import cv2 # putText函数使用的字体定义 font = cv2.FONT_HERSHEY_SIMPLEX # 读取图片、灰度转换、...当然这是个简单的实例,点数计数也可以用轮廓删选的方法代替,比如大小,宽高比等,本质上和SimpleBlobDetector是类似的,它还可以设置其他参数进行Blob过滤,比如: ? ? ?...具体可以参考这篇文章:https://www.learnopencv.com/blob-detection-using-opencv-python-c/ 对于骰子识别,传统算法一般需要分割,然后识别,识别还可以用模板匹配的方法

    4.2K22

    基于SimpleBlobDetector识别骰子点数

    OpenCV提供了一种方便的方法来检测blob并可以根据不同特征对其进行过滤,它就是SimpleBlobDetector,让我们看一个简单的例子: 上图中有6个骰子,我们希望自动识别骰子的点数,...步骤: ① 自适应阈值二值化凸显骰子外轮廓 ② 轮廓查找过滤截取每个骰子ROI ③ 使用SimpleBlobDetector检测ROI中的圆,计算点数输出 下面是代码和效果...: import cv2 # putText函数使用的字体定义 font = cv2.FONT_HERSHEY_SIMPLEX # 读取图片、灰度转换、自适应阈值 img = cv2.imread(...= 0.7 # 应用参数 detector = cv2.SimpleBlobDetector_create(params) # 变量轮廓通过外界矩形宽截取每个骰子ROI for cnt in contours...是类似的,它还可以设置其他参数进行Blob过滤,比如: 具体可以参考这篇文章:https://www.learnopencv.com/blob-detection-using-opencv-python-c

    1.4K20

    Python进阶——如何正确使用魔法方法?(下)

    在上一篇文章Python进阶——如何正确使用魔法方法?(上)中,我们主要介绍了关于构造与初始化、类的表示、访问控制这几类的魔法方法,以及它们的使用场景。...我们在开发中多少都使用到过这些方法。 在介绍容器的魔法方法之前,我们首先想一下,Python 中的容器类型都有哪些?...在 Python3 中,已不再使用 next 方法,取而代之的是 __next__。...序列化 我们知道 Python 提供了序列号模块 pickle,当我们使用这个模块序列化一个实例时,也可以通过魔法方法来实现自己的逻辑,这些魔法方法包括: __getstate__ __setstate...Python 的魔法方法正如它的名字一样,如果使用得当,我们的类就像被添加了魔法一样,变得更易用。我们可以使用这些魔法方法,帮我们实现一些复杂的功能,例如装饰器、元类等等。

    72021

    Python进阶——如何正确使用魔法方法?(上)

    这篇文章,我们就来分析一下,Python 中的魔法方法都有哪些?使用这些魔法方法,我们可以实现哪些实用的功能?...: >>> a = 'hello' >>> str(a) 'hello' >>> '%s' % a # 调用__str__ 'hello' >>> repr(a) # 对象a的标准表示 也就是a是如何创建的...28:40.923379' >>> print b # 等同于print str(b) 2017-02-22 12:28:40.923379 >>> repr(b) # 展示对象b的标准创建方式(如何创建的...__repr__ 强调准确性 / 标准性 __str__ 的目标人群是用户,而 __repr__ 的目标人群是机器,__repr__ 返回的结果是可执行的,通过 eval(repr(obj)) 可以正确运行...总结 这篇文章,我们主要介绍了 Python 中常见的魔法方法,主要有构造与初始化、类的表示、访问控制这 3 个模块。

    69031

    Python环境】如何使用正确的姿势进行高效Python函数式编程?

    相对应的sum,mul也可以直接使用reduce来完成 ? Partial 首先一个简单问题,如何构造一个默认是降序排列的Sorted2函数,如下: 一般的实现: 而使用Partial则简单的多。...不用递归的原因 三个原因使得递归没有大量被使用,因为: 递归调用有递归层数限制(Python是1000),超过会栈溢出。 重复计算。 fib(n-2)与fib(n-1)是存在重复计算的。...如下是反例: 通常使用一个帮助函数,将计算放在计算放在参数传递时,是常用技巧: ? Trampoline 然而坏消息是: Python并不支持尾递归消除!(Guido: 怪我咯!)...然而并发与分布式计算需要考虑如何把数据传入传出模块,一般的数据都是可以的。 然而Closure默认不能pickle化,这种情况下需要使用copy_reg扩展或者使用dill库。 ?...总结 通过来强深入浅出的介绍,大家了解了如何使用Python进行高逼格函数式编程的技术,工具和实践。 使用Python也可以享受函数编程所带来的高模块,可复用,并发流处理等方面的好处。

    1.5K100

    如何使用OpenCVPython中访问IP摄像头

    在此文章中,我将解释如何Python中设置对IP摄像机流的访问。 首先,必须找出网址流是什么。通过在构造函数中提供摄像机的网址流,可以在OpenCV中访问IP摄像机cv2.VideoCapture。...可以使用某些网络扫描实用程序(例如在linux上的arp-scan)找到摄像机的IP地址。...网址进一步的细节,Protocol,Credentials和Channel应该可以在相机说明书或软件/手机应用程序中找到。我们通过在网络上搜索相机的型号来找到相机的网址流。...通常,摄像机使用RTSP或HTTP协议来传输视频。...IP摄像机网址流的示例如下所示:rtsp://192.168.1.64/1 因此,可以通过以下代码实现使用OpenCV从相机获取快照: capture = cv2.VideoCapture('rtsp:

    6.6K20

    【CV 向】如何打造一个“数串串神器“

    之前吃串串火锅,老板数竹签不是称重就是用手慢慢数,但是称重似乎总是得不到正确的竹签数目,而且容易暗箱操作;而慢慢数总是要等待比较长的时间,感觉两者对处理数竹签的问题都存在比较大的缺陷。...如何打开思路呢?那就需要大胆的想象,去将“钢管”与我们的思维联系在一起,去思考一下我们在日常生活中是如何识别钢管的。 数钢管场景分析 如何去数钢管呢?...钢管数+1 大家应该都会吧,那么主要的难点是就是如何如何识别一个物体是钢管了。那么一个人又会怎样去判断一个物体是钢管呢?...然后,可以使用OpenCV中的轮廓分析、形状分析等技术对钢管进行进一步处理和计数。...总结 在本文中,我们介绍了使用OpenCV和深度学习来解决数钢管和数串串的问题,使用OpenCV的Blob Detection和Hough Circle技术对钢管以及串串进行检测,并使用轮廓分析对钢管进行计数

    33320

    我为什么要写《OpenCV Android 开发实战》这本书

    计算机视觉作为人工智能的分支学科之一、符合未来科技发展方向,OpenCV是开源的可以商业应用的最流行的计算机视觉框架,包含了3000多个算法实现,其SDK支持Java、C++、Python等编程语言,支持...如何正确循环操作每个像素点 3.2 图像通道与均值方差计算 3.3.1 – 通道分离与合并、计算均值与标准方程, 使用均值与标准方程过滤空白图像 3.3...) 6.4 SIFT特征检测与匹配 - (SIFT特征提取的步骤与特征描述子) 6.5 Feature2D中检测器与描述子 - BRISK -...讲述在Tesseract-OCR如何训练自定义数据) - 8.4.2 图像预处理(讲述如何通过OpenCV实现偏斜校正、噪声干扰去除,边线去除,来减低干扰,提高识别率)...8.5小结 (总结本章所讲内容) 第9章 人脸美颜 9.1 积分图计算(介绍图像积分图算法) 9.2 基于积分图像的局部均方差滤波(详细介绍在OpenCV如何实现自己的算法)

    1.7K30

    【CV 向】如何打造一个“数串串神器“

    之前吃串串火锅,老板数竹签不是称重就是用手慢慢数,但是称重似乎总是得不到正确的竹签数目,而且容易暗箱操作;而慢慢数总是要等待比较长的时间,感觉两者对处理数竹签的问题都存在比较大的缺陷。...如何打开思路呢?那就需要大胆的想象,去将“钢管”与我们的思维联系在一起,去思考一下我们在日常生活中是如何识别钢管的。数钢管场景分析如何去数钢管呢?一般分为两步,①识别一个物体是钢管,②钢管数 + 1。...钢管数+1 大家应该都会吧,那么主要的难点是就是如何如何识别一个物体是钢管了。那么一个人又会怎样去判断一个物体是钢管呢?...然后,可以使用OpenCV中的轮廓分析、形状分析等技术对钢管进行进一步处理和计数。...总结在本文中,我们介绍了使用OpenCV和深度学习来解决数钢管和数串串的问题,使用OpenCV的Blob Detection和Hough Circle技术对钢管以及串串进行检测,并使用轮廓分析对钢管进行计数

    60910

    历时七个月整理出来的《OpenCV4系统化学习路线图》

    根据自己近十年图像处理OpenCV开发相关工作经验,花了七个月的时间,针对OpenCV4、精心选择OpenCV中常用模块与知识点,构建了一套系统化的课程,这套课程对每个课时的代码演示都是基于C++与Python...BLOB特征分析—simpleblobdetector使用 110. KMeans 数据分类 111. KMeans图像分割 112. KMeans图像分割—背景替换 113....OpenCV DNN 支持YOLOv3-tiny版本实时对象检测 132. OpenCV DNN单张与多张图像的推断 133. OpenCV DNN 图像颜色化模型使用 134....为了更好的帮助初学者搭建好OpenCV开发环境,良心录制了一系列免费OpenCV环境搭建视频,详细信息见这里 B站OpenCV环境搭建视频 OpenCV4.0+python https://www.bilibili.com.../video/av41974149 OpenCV4.0+C++ https://www.bilibili.com/video/av36486959 划重点 1 170课时系统化学习教程 1 C++与Python

    2.6K31

    OpenCV3 和 Qt5 计算机视觉:6~10

    在本章中,您将学习许多不同的函数和类,尤其是从 OpenCV 框架的imgproc模块中。 我们将从图像过滤开始,在此过程中,您将学习如何创建允许正确使用现有算法的 GUI。...但是,图像边缘附近的像素或 OpenCV 中称为“边界像素”的像素又如何呢? 您所见,并非像素 B 的所有相邻像素都落入输入图像,即区域 B。...对于用于检测特征和提取描述符的类和方法,这几乎是完全正确的。 这就是为什么在本章中,我们将首先研究 OpenCV 中用于特征检测和描述符提取的类的层次结构,然后再深入探讨如何在实践中使用它们。...如何使用现有的 OpenCV 算法 使用FeatureDetector类检测特征(或关键点) 使用DescriptorExtractor类提取描述符 如何匹配描述符并将其用于检测 如何得出描述符匹配的结果...以及如何在第 6 章,“OpenCV 中的图像处理”中使用它们。

    2.7K20
    领券