opencv 中的 SimpleBlobDetector 没有检测到任何东西

Posted

技术标签:

【中文标题】opencv 中的 SimpleBlobDetector 没有检测到任何东西【英文标题】:SimpleBlobDetector in opencv does not detect anything 【发布时间】:2016-04-10 03:47:02 【问题描述】:

我正在使用 OpenCV 3.1 使用 SimpleBlobDetector 进行一些 blob 检测,但我没有运气,也没有教程能够解决这个问题。我的环境是 x64 上的 XCode。

我从这张图片开始:

然后我把它变成灰度:

最后我把它变成一个二进制图像并对此进行斑点检测:

我已经包含了“iostream”和“opencv2/opencv.hpp”。

using namespace cv;
using namespace std;

Mat img_rgb;
Mat img_gray;
Mat img_keypoints;    
Ptr<SimpleBlobDetector> detector = SimpleBlobDetector::create();

vector<KeyPoint> keypoints;

img_rgb = imread("summertriangle.jpg");

//Convert to greyscale
cvtColor(img_rgb, img_gray, CV_RGB2GRAY);

imshow("Grey Scale", img_gray);

// Start by creating the matrix that will allocate the new image
Mat img_bw(img_gray.size(), img_gray.type());

// Apply threshhold to convert into binary image and save to new matrix
threshold(img_gray, img_bw, 100, 255, THRESH_BINARY);

// Extract cordinates of blobs at their centroids, save to keypoints variable.
detector->detect(img_bw, keypoints);
cout << "The size of keypoints vector is: " << keypoints.size();

关键点向量始终为空。我尝试过的没有任何效果。

【问题讨论】:

您的代码根本没有配置SimpleBlobDetector。默认配置(minAreamaxArea 等)可能不适用于您正在处理的图像类型。 这是 OpenCV 的 Github 上的 blob-detector 示例,看看他们如何通过首先设置 pDefaultBLOB 参数对象来配置它:github.com/Itseez/opencv/blob/… 谢谢戴——我确实尝试设置一些参数。我使用minArea 并将其设置为1 并将maxArea 设置为1000。也没有这样做:( 【参考方案1】:

所以我解决了这个问题,没有阅读文档上的细则。感谢 Dai 对 Params 的提醒,让我仔细查看了文档。

Default values of parameters are tuned to extract dark circular blobs.

在创建 SimpleBlobDetector 对象时我只需要这样做:

SimpleBlobDetector::Params params;

params.filterByArea = true;
params.minArea = 1;
params.maxArea = 1000;
params.filterByColor = true;
params.blobColor = 255;

Ptr<SimpleBlobDetector> detector = SimpleBlobDetector::create(params);

做到了。

【讨论】:

以上是关于opencv 中的 SimpleBlobDetector 没有检测到任何东西的主要内容,如果未能解决你的问题,请参考以下文章

OpenCV 3:openCV 3.3.1 中的透视变换有啥问题?

opencv 人脸检测中的xml可以修改吗

Borland C++ 2009 中的 OpenCV

《OpenCV:cvColor在OpenCV中的应用》

OpenCV 中的 VideoReader 已弃用。 OpenCV 是不是有任何更新或任何替代?

opencv中的Java库