【问题标题】:OpenCv SimpleBlobDetector does not find all blobs. C++ , VS2015OpenCv SimpleBlobDetector 没有找到所有的 blob。 C++ , VS2015
【发布时间】:2018-09-07 13:56:43
【问题描述】:

我有一个 OpenCV SimpleBlobDetector 的简单任务

cv::SimpleBlobDetector::Params params;
cv::Ptr<cv::SimpleBlobDetector> detector = cv::SimpleBlobDetector::create(params);
std::vector<cv::KeyPoint> keypoints;
detector->detect(crop, keypoints);
drawKeypoints(crop, keypoints, crop, cv::Scalar(0, 0, 255), cv::DrawMatchesFlags::DRAW_RICH_KEYPOINTS);
cv::imshow("crop", crop);
cv::waitKey(0);

它没有检测到我图像中一半的斑点。 请看下图,

我尝试添加参数并改变它们,但它从未检测到每一个 blob。 Blob 检测是一种简单直接的算法,应该在每个图像处理 API 中进行完全改进。 OpenCV不是这样吗?

//params.minThreshold = 0;
//params.maxThreshold = 255;
//params.filterByArea = true;
//params.minArea = 1000;
//params.maxArea = 5000;
//params.filterByCircularity = true;
//params.minCircularity = 0.4;
//params.filterByConvexity = true;
//params.minConvexity = 0.87;
//params.filterByInertia = true;
//params.minInertiaRatio = 0.71;

我使用的是 OpenCV 3.3 或 3.2,我似乎无法在源代码中找到版本号

【问题讨论】:

  • 由于某些参数,算法似乎过滤了部分 blob。尝试禁用所有过滤(例如params.filterByCircularityparams.filterByConvexity

标签: c++ opencv visual-studio-2015


【解决方案1】:

我不确定这是否能正确回答我的问题,但我必须编写自己的 blob 检测,看来 OpenCV SimpleBlobDetector 并不那么简单。

【讨论】:

    猜你喜欢
    • 2021-02-19
    • 1970-01-01
    • 2017-04-23
    • 2019-01-15
    • 1970-01-01
    • 1970-01-01
    • 2020-03-27
    • 2023-03-09
    • 1970-01-01
    相关资源
    最近更新 更多