cv图像识别

安卓opencv全分辨率找图


minAreaRect 获取最小轮廓边界矩形信息

<p>[TOC]</p> <h5>简要描述</h5> <ul> <li>取最小轮廓边界矩形信息。如仅仅只需获取边界矩形的4个顶点请调用minAreaRect_vertex函数。</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;">Points</td> <td style="text-align: left;">是</td> <td style="text-align: left;">Point[]</td> <td>轮廓坐标数据集中的一个Points组。 findContours的返回值Arrlist其中的元素为 Point[]</td> </tr> </tbody> </table> <h5>返回参数说明</h5> <p>RotatedRect</p> <p>//矩形尺寸 RotatedRect.Size RotatedRect.Size.height RotatedRect.Size.width</p> <p>//矩形旋转角度 RotatedRect.angle</p> <p>//矩形中心坐标 RotatedRect.center.x RotatedRect.center.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,0,1,0,0); //绘制轮廓最小边界矩形 var mat_mask=cvImg.zeros(mat.cols(),mat.rows(),16);//创建大小与原图一样的模板图。 for(var i=0;i&lt;pointList.size();i++){ var color=[ random(100,255), random(100,255), random(100,255), 0 ]; //绘制轮廓 cvImg.drawContours(mat_mask,pointList,i,color,1); //计算最小边界矩形(4个顶点坐标) var points=cvImg.minAreaRect_vertex(pointList.get(i)); //画最小边界矩形(注意,最小边界矩形可能是旋转一定角度的矩形,所以需使用画直线方式。) cvImg.line(mat_mask,points[0].x,points[0].y,points[1].x,points[1].y,color,2); cvImg.line(mat_mask,points[1].x,points[1].y,points[2].x,points[2].y,color,2); cvImg.line(mat_mask,points[2].x,points[2].y,points[3].x,points[3].y,color,2); cvImg.line(mat_mask,points[0].x,points[0].y,points[3].x,points[3].y,color,2); } 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="" /> 最小边界矩形 <img src="https://www.showdoc.com.cn/server/api/attachment/visitFile?sign=0dd5e95a2a82a945337df6973529a8a2" alt="" /></p>

页面列表

ITEM_HTML