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

Nad*_*Lnk 4 opencv image-processing javacv

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

在此输入图像描述

所以请使用简单的代码示例解释一下.

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

在此输入图像描述

所以请善意解释这一点.

Art*_*huk 5

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

  1. 做一个红色分割: 在此输入图像描述

  2. 扩张(去除孔): 在此输入图像描述

  3. (可选)检查每个轮廓是否为正方形.

码:

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);
Run Code Online (Sandbox Code Playgroud)