我搜索了一下網上,在這裏使用搜索上的計算器,但還沒有找到完全是我一直在尋找這個問題。所以basicaly我使用簡單的斑點檢測,從OpenCV的,讓我在圖像的白色區域(這已經是二進制)和非常相似的圖像,我得到的方面非常diferent結果被檢測出並斑點都沒有,在這裏在定義simpleblobdetector時是我的參數。OpenCV的簡單的斑點檢測,得到一些未被發現的斑點
正如你可以看到一些斑點都沒有beeing檢測,這裏是我的探測器的配置:
void blobDetect(cv::Mat img) {
cv::SimpleBlobDetector::Params params;
if (Daytime) {
params.minThreshold = 23;
params.maxThreshold = 25;
}
else {
params.minThreshold = 3;
params.maxThreshold = 5;
}
params.thresholdStep = 1;
params.filterByColor = true;
params.blobColor = 255;
params.filterByArea = true;
params.minArea = 300;
params.maxArea = 400000;
params.filterByCircularity = false;
//params.minCircularity = "";
params.filterByConvexity = false;
//params.minConvexity = "";
params.filterByInertia = false;
//params.minInertiaRatio = "";
cv::Ptr<cv::SimpleBlobDetector> detector = cv::SimpleBlobDetector::create(params);
std::vector<cv::KeyPoint> keypoints;
detector->detect(img, keypoints);
cv::Mat im_with_keypoints;
std::cout << keypoints.size() << std::endl;
drawKeypoints(img, keypoints, im_with_keypoints, cv::Scalar(0, 0, 255), cv::DrawMatchesFlags::DRAW_RICH_KEYPOINTS);
imshow("display4", im_with_keypoints);
}
所以我想問,是不是因爲形狀和大小的斑點?(我懷疑這個選項,因爲在某些情況下,它可以找到大面積的奇怪形狀)我認爲簡單的斑點檢測可以找到任何一組像素,是更適合圓形斑點或類似的東西?我應該考慮使用另一種算法還是構建自己的算法?或者有沒有辦法讓我解決這個問題,並提高簡單斑點檢測的準確性?
我知道這些都是很多的問題,但預先感謝您的任何幫助,你可以給!
Blob探測器是相當古老的OpenCV,爲什麼找不到輪廓和按區域分類? –
我明白你的意思了,我會試試這個!我認爲會有更好的辦法來解決這個問題,但是由於我還沒有經驗,我無法找出哪條路可走!我會發布結果:)謝謝! –