cv图像识别

安卓opencv全分辨率找图


paddle_segment 语义分割

<p>[TOC]</p> <h5>简要描述</h5> <ul> <li>百度飞浆语义分割。 【v2.1.3】以上可用。</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;">image</td> <td style="text-align: left;">必须</td> <td style="text-align: left;">String\bitmap</td> <td>支持输入bitmp、图片文件路径。</td> </tr> <tr> <td style="text-align: left;">confidence</td> <td style="text-align: left;">必须</td> <td style="text-align: left;">double</td> <td>信度/相似度 (0~1)</td> </tr> <tr> <td style="text-align: left;">ver</td> <td style="text-align: left;">(可选)</td> <td style="text-align: left;">int</td> <td>版本。0=最新版本 1=旧的兼容版本 默认=0,如果出现兼容问题可尝试切换</td> </tr> </tbody> </table> <h5>返回值</h5> <p>String,一个json文本。返回示例如下:</p> <pre><code class="language-java">[ { "text": "0: backgroud", "labelIndex": 0, "confidence": 0, "id": 0, "x1": 0, "y1": 0, "x2": 1, "y2": 1, "mask": "[597, 238, 598, 238, 599, 238, 600, 238, 601, 238, 602, 238, 603, 238, 604, 238, 605, 238, 606, 238]" } ]</code></pre> <p>以上数据,当前唯一有意义的是:mask mask:标记分割后的mask坐标。每两个成员为一组坐标。(此方法在脚本应用领域几乎没有什么作用,所以未做优化,如果需要请联系我做优化)</p> <p>这个返回值转换成JSON后,可以使用本插件 drawRect 方法打印显示到手机屏幕上。</p> <h5>人物抠图应用</h5> <pre><code class="language-java">/**入口**/ function main() { //0、脚本停止回调,清除绘制。 cvImg.drawRectClear(); setStopCallback(function (){//停止脚本清除显示框。 sleep(3000);//延迟清除,不然看不到绘制效果。 cvImg.drawRectClear(); loge("脚本已停止!") }); logd("开始执行脚本..."); //1、申请截图权限 logd("申请截图权限",image.requestScreenCapture(10000,0)); //2、加载百度飞浆库(该操作,脚本开头执行一次即可。) var ret=cvImg.paddle_loadLib("/sdcard/lib.apk",""); if(!ret){ loge(cvImg.paddle_getErrorText()); exit(); } //3、加载模型 ret= cvImg.paddle_loadMode("/sdcard/segment_PP_LiteSeg_STDC1.apk","segment",4); if(!ret){ loge(cvImg.paddle_getErrorText()); exit(); }else{ logd("模型加载OK...") } //截图 var bitmap=image.captureScreenBitmap("png",0,0,cvImg.dw,cvImg.dh ,100); if(bitmap){//语义分割 let t=time(); var info=cvImg.paddle_segment(bitmap,0.2,0); logd("检测耗时:"+(time()-t)+"ms"); //调用失败输出错误信息。 if(cvImg.paddle_getErrorText()+""!=="")loge(cvImg.paddle_getErrorText()); logd(info.substr(0,1000)) //绘制结果,以及性能 if(info){ let t=time(); var json=JSON.parse(info); cvImg.drawRect(json,1);// {"person":1} 表示只显示人物 logd("绘制耗时:"+(time()-t)+"ms"); } //释放截图 image.recycle(bitmap) }else{ logd("请给个截图权限呗....") } //释放模型 cvImg.paddle_release(); } </code></pre> <p>语义分割的目标图像 <img src="https://www.showdoc.com.cn/server/api/attachment/visitFile?sign=2949093ea592b09b2247da8916319b9f&amp;file=file.png" alt="" /></p> <p>语义分割后的结果 <img src="https://www.showdoc.com.cn/server/api/attachment/visitFile?sign=b8ef4d42b5c5c968a1738d0a04920cf4&amp;file=file.png" alt="" /></p>

页面列表

ITEM_HTML