如何识别不直接相互分离的轮廓?

时间:2012-08-11 06:23:52

标签: image-processing opencv javacv

请有人解释如何识别彼此不完全分开的轮廓的方形。例如,我需要识别下面图像中的方块数以及它们边缘的x,y坐标。我尝试通过this问题,但它对我不起作用。

enter image description here

因此,请使用简单的代码示例解释一下。

这是我可以生成的图像,请您解释如何识别此图像中的上方。

enter image description here

所以请善意解释一下。

1 个答案:

答案 0 :(得分:5)

你必须使用事实,每个方块的红色分量等于255,并做阈值。这就是我所做的:

  1. 进行红色分割: enter image description here

  2. 做扩张(去除洞): enter image description here

  3. (可选)检查每个轮廓是否为正方形。
  4. 代码:

    Mat src = imread("input.png"), red;
    extractChannel(src, red, 2);
    
    threshold(red, red, 254, 255, THRESH_BINARY);
    
    Mat element = getStructuringElement(MORPH_RECT, Size( 2, 2 ), Point( 1, 1 ));
    dilate(red, red, element);