BlobDetector的使用与参数说明(OpenCV/C++)

通过opencv的BlobDetector方法可以检测斑点、圆点、椭圆等形状

以下是使用方式及代码说明:

1、导入必要的OpenCV库和头文件。

复制代码
#include <opencv2/opencv.hpp>
#include <opencv2/blob/blobdetector.hpp>

2、读取图像并将其转换为灰度图像。

复制代码
cv::Mat image = cv::imread("image.jpg", cv::IMREAD_GRAYSCALE);

3、创建一个BlobDetector对象,并设置相关参数。

复制代码
cv::SimpleBlobDetector::Params params;

// 设置检测圆的阈值
params.minThreshold = 10;
params.maxThreshold = 200;

//设置识别的预期颜色
//params.blobColor = 0;    //0表示预期检测圆的颜色为白色

// 用于过滤面积小的blob
params.filterByArea = false;    //true表示启动该功能,false表示关闭该功能
params.minArea = 0.1;

//用于过滤不符合圆形形状的blob
params.filterByCircularity = true;
params.minCircularity = 0.8;

//用于过滤不规则或者非凸的blob
params.filterByConvexity = true;
params.minConvexity = 0.8;

//用于过滤不符合椭圆形状的blob
params.filterByInertia = true;
params.minInertiaRatio = 0.8;

// 创建BlobDetector对象
cv::Ptr<cv::SimpleBlobDetector> detector = cv::SimpleBlobDetector::create(params);

4、使用BlobDetector在图像中检测圆形。

复制代码
std::vector<cv::KeyPoint> keypoints;
detector->detect(image, keypoints);

5、绘制检测到的圆。

复制代码
cv::Mat imageWithKeypoints;
cv::drawKeypoints(image, keypoints, imageWithKeypoints, cv::Scalar(0, 0, 255), cv::DrawMatchesFlags::DRAW_RICH_KEYPOINTS);

6、显示并保存带有检测到的圆的图像。

复制代码
cv::imshow("Circle Detection", imageWithKeypoints);
cv::waitKey(0);
cv::imwrite("result.jpg", imageWithKeypoints);
相关推荐
近津薪荼4 分钟前
递归专题(2)——合并链表
c++·学习·算法·链表
maplewen.11 分钟前
C++11 std::function
开发语言·c++
Sagittarius_A*12 分钟前
灰度变换与阈值化:从像素映射到图像二值化的核心操作【计算机视觉】
图像处理·人工智能·opencv·算法·计算机视觉·图像阈值·灰度变换
水饺编程20 分钟前
第4章,[标签 Win32] :文本尺寸的度量
c语言·c++·windows·visual studio
蒹葭玉树23 分钟前
【C++上岸】C++常见面试题目--操作系统篇(第二十九期)
java·c++·面试
浅念-27 分钟前
C语言——自定义类型:结构体、联合体、枚举
c语言·开发语言·数据结构·c++·笔记·学习·html
仰泳的熊猫35 分钟前
题目1433:蓝桥杯2013年第四届真题-危险系数
数据结构·c++·算法·蓝桥杯·深度优先·图论
h7ml40 分钟前
查券返利机器人图像识别:OpenCV 模板匹配对抗淘宝小程序动态化骨架屏
opencv·小程序·机器人
Trouvaille ~1 小时前
【Linux】线程同步与互斥(四):线程池与任务管理
linux·运维·服务器·c++·操作系统·线程池·日志系统
wbs_scy1 小时前
C++:智能指针完全指南(原理、用法与避坑实战,从 RAII 到循环引用)
开发语言·c++·算法