findContours 提取轮廓
<p>[TOC]</p>
<h5>简要描述</h5>
<ul>
<li>提取轮廓。返回arraylist 轮廓坐标数据集。应使用 drawContours 函数绘制轮廓</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对象。</td>
</tr>
<tr>
<td style="text-align: left;">mode</td>
<td style="text-align: left;">是</td>
<td style="text-align: left;">int</td>
<td>拓扑模式<br/> 0、最外层最大轮廓<br/> 1、获取所有轮廓<br/> 2、获取所有轮廓双层结构<br/> 3、获取轮廓按树形结构组织</td>
</tr>
<tr>
<td style="text-align: left;">method</td>
<td style="text-align: left;">是</td>
<td style="text-align: left;">int</td>
<td>描述轮廓的方法。1、所有点<br/>2、压缩部分点<br/>3/4<br/>使用Teh-Chin链式逼近算法</td>
</tr>
<tr>
<td style="text-align: left;">offsetX , offsetY</td>
<td style="text-align: left;">(可选)</td>
<td style="text-align: left;">int</td>
<td>位移值。 默认=0</td>
</tr>
</tbody>
</table>
<h5>返回参数说明</h5>
<p>ArrayList<Point[]> | null
Point.x
Point.y</p>
<h5>示例</h5>
<pre><code class="language-java"> //载入图像(载入灰度)
var mat=cvImg.loadFromFile("/sdcard/Pictures/tem.jpg",0);
//高斯平滑
var mat_blur=cvImg.blurGaussian(mat);
cvImg.toFile(mat_blur,"/sdcard/Pictures/tem3.jpg");
//边缘检测
var mat_canny=cvImg.canny(mat_blur,50,150,3,true);
cvImg.toFile(mat_canny,"/sdcard/Pictures/tem4.jpg");
//闭操作,小的,不连续的线条,使之连接起来
var mat_result=cvImg.morphologyEx (mat_canny,3,3,3,-1,-1,2);
cvImg.toFile(mat_result,"/sdcard/Pictures/tem5.jpg");
//寻找轮廓
var pointList=cvImg.findContours(mat_result,3,1,0,0);
//绘制轮廓
var mat_mask=cvImg.zeros(mat.cols(),mat.rows(),16);//创建大小与原图一样的模板图。
for(var i=0;i<pointList.size();i++){
var color=[
random(100,255),
random(100,255),
random(100,255),
0
];
cvImg.drawContours(mat_mask,pointList,i,color,-1)
}
cvImg.toFile(mat_mask,"/sdcard/Pictures/tem6.jpg");
cvImg.release(mat);//释放
cvImg.release(mat_blur);//释放
cvImg.release(mat_canny);//释放
cvImg.release(mat_mask);//释放</code></pre>
<p>原图
<img src="https://www.showdoc.com.cn/server/api/attachment/visitFile?sign=3d8a63ddd957da1963596beb18f12997" alt="" />
边缘检测后
<img src="https://www.showdoc.com.cn/server/api/attachment/visitFile?sign=bcacd77abe866357489d3d80a045cf32" alt="" />
闭操作后
<img src="https://www.showdoc.com.cn/server/api/attachment/visitFile?sign=9645e145b92c4e6d63b90e4acfdf105b" alt="" />
绘制并填充轮廓。
<img src="https://www.showdoc.com.cn/server/api/attachment/visitFile?sign=5feeefc8a76894453deed25ebf2a16d6" alt="" /></p>