connectedComponentsWithStats 连通域检测
<p>[TOC]</p>
<h5>简要描述</h5>
<ul>
<li>connectedComponentsWithStats 检查轮廓、边缘连通域。获得连通域位置、宽高、中心。在物体形状、特征检测领域有很大作用 <strong>V 2.1.2 以及以上版本可用</strong></li>
</ul>
<h5>参数</h5>
<table>
<thead>
<tr>
<th style="text-align: left;">参数名</th>
<th style="text-align: left;">必选</th>
<th style="text-align: left;">类型</th>
<th>说明</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: left;">mat</td>
<td style="text-align: left;">是</td>
<td style="text-align: left;">mat</td>
<td>欲检测的mat对象, 必须8uc1 格式,</td>
</tr>
<tr>
<td style="text-align: left;">connectivity</td>
<td style="text-align: left;">(可选)</td>
<td style="text-align: left;">int</td>
<td>标记连通域时使用的邻域种类,默认=8. 4:四邻域,8:八邻域。</td>
</tr>
<tr>
<td style="text-align: left;">ltype</td>
<td style="text-align: left;">(可选)</td>
<td style="text-align: left;">int</td>
<td>输出图像的数据类型,默认=4。目前支持CV_32S=4和CV_16U=2两种数据类型。</td>
</tr>
<tr>
<td style="text-align: left;">ccltype</td>
<td style="text-align: left;">(可选)</td>
<td style="text-align: left;">int</td>
<td>算法类型。 默认=0。可选值: 0、-1、1</td>
</tr>
</tbody>
</table>
<h5>返回参数说明</h5>
<p>返回JSON数组 或 NULL</p>
<p>返回样例:
[
{"zx":337,"zy":181,"left":51,"top":24,"width":570,"height":306,"area":20956,"max":0},{"zx":345,"zy":190,"left":0,"top":0,"width":690,"height":380,"area":240293,"max":0},{"zx":83,"zy":38,"left":80,"top":36,"width":7,"height":5,"area":23,"max":0},{"zx":155,"zy":43,"left":154,"top":40,"width":3,"height":7,"area":10,"max":0},{"zx":607,"zy":42,"left":605,"top":40,"width":5,"height":5,"area":11,"max":0},{"zx":522,"zy":48,"left":519,"top":47,"width":7,"height":3,"area":13,"max":0},{"zx":597,"zy":56,"left":597,"top":56,"width":1,"height":1,"area":1,"max":0},{"zx":447,"zy":64,"left":445,"top":57,"width":5,"height":15,"area":45,"max":0},{"zx":83,"zy":95,"left":83,"top":94,"width":3,"height":3,"area":6,"max":0}
]</p>
<h5>连通域检测样例</h5>
<pre><code class="language-java">//载入图
var mat_1=cvImg.loadFromFile('/sdcard/Pictures/t1.png',1);
//转到灰度
var mat_gray=cvImg.toGray(mat_1);
//二值化
var mat_two=cvImg.threshold(mat_gray,0,100,255);
//连通域检测
var list=cvImg.connectedComponentsWithStats(mat_two);
//在原图上画出连通域位置
for(var i=0;i<list.length;i++){
var key=list[i];
cvImg.rectangle(
mat_1,
key.left,
key.top,
key.left+key.width,
key.top+key.height,
[random(100,255),random(100,255),random(100,255),255],
1)
}
//保存到文件,查看效果
cvImg.toFile(mat_1,"连通域效果输出.png")
logd(JSON.stringify(list))</code></pre>
<p><img src="https://www.showdoc.com.cn/server/api/attachment/visitFile?sign=3efd42891c06d27d5801ceca0b315d50&file=file.png" alt="" /></p>