xor 异或运算
<p>[TOC]</p>
<h5>简要描述</h5>
<ul>
<li>异位,图像计算和还原。 去除图像中相同的部分。在找茬类游戏中,该函数可一步到位。
位或真值表:
1 1 0
1 0 1
0 1 1
0 0 0</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对象。</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">//载入动漫图像
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(),[255,255,0,0],1000);
cvImg.toFile(mat_mask,"/sdcard/Pictures/tem2.jpg");
//进行or位运算
var mat_xor=cvImg.xor(mat,mat_mask);
cvImg.toFile(mat_xor,"/sdcard/Pictures/tem3.jpg");
//mat xor mat_mask 的结果,再次 xor mat_mask
var mat_xor_2=cvImg.xor(mat_xor,mat_mask);
cvImg.toFile(mat_xor_2,"/sdcard/Pictures/tem4.jpg");
cvImg.release(mat);//释放
cvImg.release(mat_mask);//释放
cvImg.release(mat_xor);//释放
cvImg.release(mat_xor_2);//释放</code></pre>
<p>原图
<img src="https://www.showdoc.com.cn/server/api/attachment/visitFile?sign=c846affafd476707e264f13495498c28" alt="" /></p>
<p>参与xor的运算图,称为模板图也行。
<img src="https://www.showdoc.com.cn/server/api/attachment/visitFile?sign=9c19470ef6d053259f01a299dc27cfcc" alt="" /></p>
<p>Xor(原图,模板图)的结果
<img src="https://www.showdoc.com.cn/server/api/attachment/visitFile?sign=74bc0a53b22839c5800c63c80c8c0e08" alt="" /></p>
<p>Xor(Xor(原图,模板图),模板图) 进行了图像还原
<img src="https://www.showdoc.com.cn/server/api/attachment/visitFile?sign=c846affafd476707e264f13495498c28" alt="" /></p>