我有一個圖像,我想檢測我的對象內的洞(用它來計算每個洞的面積)。這是使用opencv進行操作後的圖像。Opencv Hole detection
問題是背景和洞具有相同的顏色。
所以我不知道該怎麼辦分開他們,我不知道我應該用什麼算法來檢測孔中。
cv::threshold(channel[1], channel[1], 190, 255, CV_THRESH_BINARY);
cv::Mat element = cv::getStructuringElement(cv::MORPH_RECT, cv::Size(3, 3));
cv::morphologyEx(channel[1], channel[1], cv::MORPH_OPEN, element);
cv::dilate(channel[1], channel[1], element);
cv::bitwise_not(channel[1], channel[1]);
cv::imwrite("green_after.bmp", channel[1]);
cv::Mat dist;
cv::distanceTransform(channel[1], dist, CV_DIST_L2, 3);
cv::imwrite("dist.bmp", dist);
cv::normalize(dist, dist, 0, 1., cv::NORM_MINMAX);
cv::imwrite("dist2.bmp", dist);
cv::threshold(dist, dist, .1, 1., cv::THRESH_BINARY);
cv::imwrite("dist3.bmp", dist);
cv::normalize(dist, dist, 0.0, 255.0, cv::NORM_MINMAX);
cv::imwrite("dist4.bmp", dist);
cv::Mat invSrc = cv::Scalar::all(255) - dist;
cv::imwrite("dist5.bmp", invSrc);
接下來我應該做什麼?
「洞」的定義是有點不清楚。在黑色大塊內有一些相當大的白色區域。這些背景或漏洞? – 2015-02-05 15:55:07
我會將它們視爲漏洞 – 2015-02-05 15:58:55
是否需要全自動工作,還是允許手動交互(單擊圖像)? – 2015-02-05 16:08:31