私は少しオンラインで検索し、ここでstackoverflowの検索を使用していますが、私はこの問題を探していました。だから基本的には、opencvの単純なブロブ検出を使って、画像(すでにバイナリである)の白い部分を取得しています。非常に似た画像では、ブロブが検出されたものとそうでないもの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);
}
それが原因形状であり、ブロブのサイズ?(私はいくつかのケースでは、巨大な領域を見つけることができるので、このオプションを疑う)私は単純なブロブの検出は、ピクセルのグループを見つけることができると思った、それはより円環状ブロブなどに適していますか?私は別のアルゴリズムを使用したり、自分自身を構築することについて考えるべきですか?または私はこれを回避し、単純なブロブ検出の精度を高めるための方法はありますか?
私はそれらがたくさんの質問であることを知っていますが、あなたが与えることができる任意の助けのために事前に感謝します!
ブロブ検出器はかなり古いOpenCVですが、輪郭線や領域をソートしてみませんか? –
私はあなたが何を意味するかを見て、私はこれを試してみましょう!私はこれを改善する良い方法があると思ったが、私はまだ経験していないので、どの方法を検討するのか困っていた!私は結果を投稿します:)ありがとう! –