gpt4 book ai didi

opencv - 在 OpenCV C++ 中使用 SimpleBlobDetector 时如何处理紧密重叠的关键点?

转载 作者:太空宇宙 更新时间:2023-11-03 23:08:45 25 4
gpt4 key购买 nike

我对将 OpenCV 与 C++ 结合使用还很陌生,目前我正在使用它通过 blob 检测来计算托盘中的对象数量。

当我使用 SimpleBlobDetector 时,我不断得到一个特定的关键点,该关键点基本上与另一个已经存在的关键点重叠。

enter image description here

为什么会发生这种情况,我该如何处理?

(注意:我只按区域筛选,最低使用500)

我还包含了用于声明检测器参数以及调用检测函数的代码:

图像是使用 RealSense 相机拍摄的,然后将其转换为 Mat 变量供 OpenCV 使用。

//Blob Detection Setup 
SimpleBlobDetector::Params params;
//Area filter
params.filterByArea = true;
params.minArea = 500; //used to filter out specks
params.maxArea = 3000000; //this is just an arbitrarily very high number to exceed the default cap
//Circularity filter
params.filterByCircularity = false;
//Convexity filter
params.filterByConvexity = false;
//Inertia filter
params.filterByInertia = false;

Ptr<SimpleBlobDetector> standard_detector = SimpleBlobDetector::create(params);
vector<KeyPoint> standard_keypoints;
standard_detector->detect(standard_im_inv, standard_keypoints);
int objCount = size(standard_keypoints);

Mat standard_im_with_keypoints;
drawKeypoints(standard_im_inv, standard_keypoints, standard_im_with_keypoints, Scalar(0, 0, 255), DrawMatchesFlags::DRAW_RICH_KEYPOINTS);

最佳答案

通过将最大面积参数更改为:设法解决了问题:

params.maxArea = 10000;

事实上,使用如此巨大的初始最大面积参数太过分了,很可能一开始就会引起问题。

关于opencv - 在 OpenCV C++ 中使用 SimpleBlobDetector 时如何处理紧密重叠的关键点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54066258/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com