cv图像识别

安卓opencv全分辨率找图


sub 减运算

<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;">mat1</td> <td style="text-align: left;">是</td> <td style="text-align: left;">mat</td> <td>参与计算的mat对象。 mat1-mat2</td> </tr> <tr> <td style="text-align: left;">mat2</td> <td style="text-align: left;">是</td> <td style="text-align: left;">mat</td> <td>参与计算的mat对象。</td> </tr> </tbody> </table> <h5>返回参数说明</h5> <p>mat | null</p> <h5>帧差法,提取图片彩色边缘(由于保留了领域差,所以是无锯齿的)</h5> <pre><code class="language-java">function test_2() { var mat=cvImg.loadFromFile("/sdcard/z1.png"); var w=cvImg.getWidth(mat); var h=cvImg.getHeight(mat); var type=cvImg.getType(mat); //帧差法模拟X轴梯度 var mat_n=cvImg.zeros(w,h,type,[0,0,0,0]);//创建模板 //留左边 cvImg.bitBlt( mat_n, 1,0,-1,-1, mat, 0,0,w-1,h, 1,0 ); var mat_sub_x1=cvImg.sub(mat,mat_n); cvImg.toFile(mat_n,"/sdcard/mat_n.png"); cvImg.toFile(mat_sub_x1,"/sdcard/mat_sub_x1.png"); //留顶边 cvImg.rectangle(mat_n,0,0,w,h,[0,0,0,0,0],-1); cvImg.bitBlt( mat_n, 0,1,-1,-1, mat, 0,0,w,h-1, 1,0 ); var mat_sub_y1=cvImg.sub(mat,mat_n); cvImg.toFile(mat_n,"/sdcard/mat_n.png"); cvImg.toFile(mat_sub_y1,"/sdcard/mat_sub_y1.png"); //留右边 cvImg.rectangle(mat_n,0,0,w,h,[0,0,0,0,0],-1); cvImg.bitBlt( mat_n, 0,0,-1,-1, mat, 1,0,w-1,h, 1,0 ); var mat_sub_x2=cvImg.sub(mat,mat_n); cvImg.toFile(mat_n,"/sdcard/mat_n.png"); cvImg.toFile(mat_sub_x2,"/sdcard/mat_sub_x2.png"); //留底边 cvImg.rectangle(mat_n,0,0,w,h,[0,0,0,0,0],-1); cvImg.bitBlt( mat_n, 0,0,-1,-1, mat, 0,1,w,h-1, 1,0 ); var mat_sub_y2=cvImg.sub(mat,mat_n); cvImg.toFile(mat_n,"/sdcard/mat_n.png"); cvImg.toFile(mat_sub_y2,"/sdcard/mat_sub_y2.png"); //合成编译 var mat_add=cvImg.or(mat_sub_x1 ,mat_sub_x2); mat_add=cvImg.or(mat_add ,mat_sub_y1); mat_add=cvImg.or(mat_add ,mat_sub_y2); cvImg.toFile(mat_add,"/sdcard/mat_add.png") cvImg.toFile(cvImg.and(mat,mat_add),"/sdcard/mat_xor.png") }</code></pre> <p>原图 <img src="https://www.showdoc.com.cn/server/api/attachment/visitFile?sign=b600c92845bccd9f8c873542c68bc01d&amp;file=file.png" alt="" /></p> <p>帧差法(sub)合成(or) <img src="https://www.showdoc.com.cn/server/api/attachment/visitFile?sign=ec317e709b38201b1e08d091d33d0cd0&amp;file=file.png" alt="" /></p> <h5>示例(sub减少图像亮度)</h5> <pre><code class="language-java"> //载入动漫图像 var mat=cvImg.loadFromFile("/sdcard/Pictures/tem.jpg"); //创建掩模,类型、大小与动漫大小一样。并填充一些颜色 var mat_mask=cvImg.zeros(mat.cols(),mat.rows(),mat.type()); cvImg.rectangle(mat_mask,0,0,mat_mask.cols(),mat_mask.rows(),[100,100,100,0],1000); cvImg.toFile(mat_mask,"/sdcard/Pictures/tem2.jpg"); //进行sub运算 var mat_result=cvImg.sub(mat,mat_mask); cvImg.toFile(mat_result,"/sdcard/Pictures/tem3.jpg"); cvImg.release(mat);//释放 cvImg.release(mat_mask);//释放 cvImg.release(mat_result);//释放</code></pre> <p>原图 <img src="https://www.showdoc.com.cn/server/api/attachment/visitFile?sign=9a179f27b3a007215a59551fcec4f7be" alt="" /></p> <p>掩模图 <img src="https://www.showdoc.com.cn/server/api/attachment/visitFile?sign=91e310a9a116e7b1caf453e6f2adc9e2" alt="" /></p> <p>效果 <img src="https://www.showdoc.com.cn/server/api/attachment/visitFile?sign=61e86a4802718eb71b08cb85e0c27395" alt="" /></p>

页面列表

ITEM_HTML