【发布时间】:2015-04-05 12:50:49
【问题描述】:
我有一张图像,我想检测对象内部的孔(用它来计算每个孔的面积)。这是我使用 opencv 操作后的图像。
问题是背景和孔的颜色相同。
所以我不知道如何将它们分开,也不知道应该使用什么算法来检测这些漏洞。
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);
接下来我该怎么做?
【问题讨论】:
-
“洞”的定义有点不清楚。在大黑色斑点内有一些相当大的白色区域。这些是背景还是漏洞?
-
我会将它们视为漏洞
-
它需要全自动工作,还是允许手动交互(点击图片)?