opencv 3, blobdetection, The function/feature is not implemented () in detectAndCompute

Vincent Lartaud picture Vincent Lartaud · Jun 3, 2015 · Viewed 17k times · Source

I have a problem with opencv 3: I want to use a feature detector, SimpleBlobDetector, about to use filters by convexity and circularity. But when I try to execute the code, the following error is tracked:

The function/feature is not implemented () in detectAndCompute

Then the application crashes.

I searched for informations in the internet without any relevant answer. I think the 3rd version of Opencv could be responsible for this bug, because I know I use the detector the good way (I tried exactly like the official opencv tutorial) and I noticed than the SimpleBlobDector has been modified for the third version.

Using breakpoint, I know that the following line crashes:

detector.detect(gray, keypoints);

The SimpleBlobDetector has been created (using the create function) and configured, the gray image isn't empty and the keypoints vector does not need to be filled before the detection.

I use opencv 3.0.0, compiled in MinGW with QtCreator. The opencv treatment is not launched from the main thread.

Did anybody else have the same problem? I would be gratefull if I could have a patch or another solution using another class. I really need to use convexity to filter my blobs and the other detectors I found (FeatureDetector or Brisk) cannot be configurable and only return keypoints, which doesn't have the area or fullness parameters to calculate convexity.

Thanks in advance

Answer

benderto picture benderto · Aug 12, 2015

this looks like it is solved, but maybe it helps someone else. I had the same problem. I created blob detector like this:

cv::SimpleBlobDetector detector;
detector.create(params);
detector.detect( img, keypoints );

This ended up with error: The function/feature is not implemented () in detectAndCompute.

But when I tried it like this:

cv::Ptr<cv::SimpleBlobDetector> detector = cv::SimpleBlobDetector::create(params); 
detector->detect( img, keypoints );

Now everything works as expected.

It is really strange and if anyone knows why is working like that let me know please.