houghCircles 霍夫圆检测
<p>[TOC]</p>
<h5>简要描述</h5>
<ul>
<li>霍夫圆检测</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;">dp</td>
<td style="text-align: left;">(可选)</td>
<td style="text-align: left;">int</td>
<td>图像分辨率。值越大分辨率越小。1=100%、2=50% 类推。</td>
</tr>
<tr>
<td style="text-align: left;">minDist</td>
<td style="text-align: left;">(可选)</td>
<td style="text-align: left;">int</td>
<td>圆心之间最小距离,在距离内则认为是同一个圆。</td>
</tr>
<tr>
<td style="text-align: left;">param1</td>
<td style="text-align: left;">(可选)</td>
<td style="text-align: left;">int</td>
<td>边缘检测算法的高阈值,通常为:100。</td>
</tr>
<tr>
<td style="text-align: left;">param2</td>
<td style="text-align: left;">(可选)</td>
<td style="text-align: left;">int</td>
<td>累加器阈值,值越大越可能是圆,通常为30.</td>
</tr>
<tr>
<td style="text-align: left;">minRadius</td>
<td style="text-align: left;">(可选)</td>
<td style="text-align: left;">int</td>
<td>检测最小半径</td>
</tr>
<tr>
<td style="text-align: left;">maxRadius</td>
<td style="text-align: left;">(可选)</td>
<td style="text-align: left;">int</td>
<td>检测最大半径</td>
</tr>
</tbody>
</table>
<h5>返回参数说明</h5>
<p>ArrayList<HashMap<String,Integer>> | null</p>
<h5>示例</h5>
<pre><code class="language-java">//载入图像
var mat=cvImg.loadFromFile("/sdcard/Pictures/1.jpg",1);
//均值滤波
var mat_blur=cvImg.pyrMeanShiftFiltering(mat,15,80);
cvImg.toFile(mat_blur,"/sdcard/Pictures/tem1.jpg");
//灰度
var mat_gray=cvImg.gray(mat_blur);
cvImg.release(mat_blur);//释放
cvImg.toFile(mat_gray,"/sdcard/Pictures/tem2.jpg");
//高斯平滑
var mat_blur=cvImg.blurGaussian(mat_gray);
cvImg.toFile(mat_blur,"/sdcard/Pictures/tem3.jpg");
//霍夫圆检测
var arrayList=cvImg.houghCircles(mat_blur,1,50,100,46,10,200);
//绘制圆。
for(var i=0;i<arrayList.size();i++){
var color=[
random(100,255),
random(100,255),
random(100,255),
0
];
cvImg.ellipse(mat,
arrayList.get(i).get("ax"),
arrayList.get(i).get("ay"),
arrayList.get(i).get("r"),
arrayList.get(i).get("r"),
color,5);
}
cvImg.toFile(mat,"/sdcard/Pictures/tem4.jpg");
cvImg.release(mat);//释放
cvImg.release(mat_gray);//释放
cvImg.release(mat_blur);//释放</code></pre>
<p>原图
<img src="https://www.showdoc.com.cn/server/api/attachment/visitFile?sign=63c4cda7537e7044cd407656603bb4f8" alt="" />
均值滤波
<img src="https://www.showdoc.com.cn/server/api/attachment/visitFile?sign=6fdd55617c48db0164f677f9eaa372cb" alt="" />
灰度
<img src="https://www.showdoc.com.cn/server/api/attachment/visitFile?sign=1e0f5fc851b9f15c6159f1060879da79" alt="" />
高斯滤波
<img src="https://www.showdoc.com.cn/server/api/attachment/visitFile?sign=b8ad3df0a3b0ecb71374d369d94c0d46" alt="" />
圆检测输出
<img src="https://www.showdoc.com.cn/server/api/attachment/visitFile?sign=f2176af079d81a627997e2dcdbbdae62" alt="" /></p>