1
我使用OpenCV 3.1來使用SimpleBlobDetector做一些blob檢測,但我沒有運氣,沒有教程能夠解決這個問題。我的環境是x64上的XCode。opencv中的SimpleBlobDetector沒有檢測到任何東西
我已經包含「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'。很可能默認配置('minArea','maxArea'等)不適合您正在處理的圖像。 – Dai
這是OpenCV的Github上的blob-detector示例,請參閱它們如何通過首先設置「pDefaultBLOB」params對象來配置它:https://github.com/Itseez/opencv/blob/2f4e38c8313ff313de7c41141d56d945d91f47cf/samples/cpp/detect_blob.cpp – Dai
謝謝戴 - 我嘗試設置一些參數。我使用了'minArea',並將其設置爲1,將'maxArea'設置爲1000.沒有這樣做: –