使用以下代码检测灰度图像中的所有方块:
for (;contours != null; contours = contours.HNext)
{
var approxContour = contours.ApproxPoly(contours.Perimeter * 0.05,
contours.Storage);
var rect = approxContour.GetMinAreaRect();
if (IsSquare(rect, rect.size.Height * 0.1f))
boxes.Add(rect);
}
我正在寻找一种根据颜色过滤方块的方法。例如。我想删除平均灰度值小于128的所有正方形。
我必须使用哪个OpenCv功能?
答案 0 :(得分:2)
您必须使用ROI和GetAverage():
var rect = approxContour.GetMinAreaRect();
gray.ROI = approxContour.BoundingRectangle;
var average = gray.GetAverage();
gray.ROI = Rectangle.Empty;
if (average.Intensity > 100)
{
continue;
}