hashCodeP 感知hash算法
<p>[TOC]</p>
<h5>简要描述</h5>
<ul>
<li>hashCodeP 感知hash算法,返回hash值。该算法主要应用于通过缩略图来寻找原图 <strong>V 2.1.2 以及以上版本可用</strong></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;">dctSize</td>
<td style="text-align: left;">(可选)</td>
<td style="text-align: left;">int</td>
<td>DCT运算时,图片采样大小.默认=32。可以为8、32、64 最小为8. 值越大,精确度越高,效率越低。</td>
</tr>
<tr>
<td style="text-align: left;">dataSize</td>
<td style="text-align: left;">(可选)</td>
<td style="text-align: left;">int</td>
<td>DCT运算后,DCT数据采样大小。默认=8。 该参数是测试用,不懂原理的朋友此参数无需你填写</td>
</tr>
</tbody>
</table>
<h5>返回参数说明</h5>
<p>String 返回二进制字符值。可使用汉明距离算法,进行相似度判断</p>
<p>返回样例:
1100001011100100001011011000100001111000010100101010000100101000</p>
<h5>判断两图相似例子。</h5>
<pre><code class="language-java">//载入两张图
var mat_1=cvImg.loadFromFile('/sdcard/Pictures/f1.png',1);
var mat_2=cvImg.loadFromFile('/sdcard/Pictures/f2.png',1);
//计算两张图hash 感知DCT
var hash_1=cvImg.hashCodeP(mat_1);
var hash_2=cvImg.hashCodeP(mat_2);
logd(hash_1);
logd(hash_2);
//计算汉明距离
var hm=cvImg.hanmingDistance(hash_1,hash_2);
logd(hm)
//DCT后,采样核=8 8*8=64 计算距离百分比。
logd("图片相似度:",(64-hm)/64);</code></pre>
<h4>例如:以下2图的相似度在0.79左右</h4>
<p><img src="https://www.showdoc.com.cn/server/api/attachment/visitFile?sign=fd52fe670ec7c60ce4f38531060d2c14&file=file.png" alt="" /></p>
<p><img src="https://www.showdoc.com.cn/server/api/attachment/visitFile?sign=40a81073b7a0e1fc11dccfcb3dd85177&file=file.png" alt="" /></p>