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);
相关推荐
ryanuo716 分钟前
Shadcn/ui × Qt 6/QML:一次从 Web UI 到桌面 UI 的组件化实践
c++·qt·ui·shadcn
余额瞒着我当琳18 分钟前
C++--vector第二讲:手写 C++ STL:vector 源码剖析与迭代器失效分析
android·java·c++
郝学胜-神的一滴30 分钟前
[简化版 GAMES 104] 现代游戏引擎 06:从Tick时序到邮局模型,拆解确定性世界的底层密码
开发语言·c++·游戏引擎·图形渲染·软件开发·opengl
不会代码的小猴31 分钟前
6. Qt网络编程
开发语言·c++·笔记·qt·算法
沐风老师34 分钟前
从零开始学3dMax插件开发!
c++·3dmax插件·3dmax·maxscript
wuyk55511 小时前
98.C语言易混难点:字符数组与字符串指针的底层差异
c语言·开发语言·c++·stm32·嵌入式硬件·算法
峥无12 小时前
从0到1手撕红黑树:封装实现 my_map 与 my_set(SGI-STL 源码级深度解析)
开发语言·c++·笔记·算法·stl
波特率11520012 小时前
C++新特性---属性说明符与标准属性
开发语言·c++
不会代码的小猴12 小时前
3. 控件学习1
开发语言·c++·笔记·qt·算法
烧酒同学17 小时前
【C++】记录size of std::vector的巧妙坑
开发语言·c++·图形渲染