在Android中查找图像之间的相似性(位图)

问题描述 投票:0回答:1

我有几个 100x100 位图存储 而我想 比较其他传入的100x100位图。 在我的应用程序中,与现有的那些到 找出相似之处 并将结果返回给用户,即哪个位图与输入的位图相匹配。

例如,考虑到我已经有了这张令人激动的位图,图片的背景在现实中是透明的。图像的背景在现实中是透明的

Existing Bitmap

然后,我从用户那里接收到以下位图作为输入。

User input image

现在,我想向用户输出一些相似度测量值,并告诉用户这两张图是相似的,因为它们都是直的,向上的,而且它们从底部有一个尾部的效果。

目前我已经尝试了以下方法,但没有达到预期的效果。

  1. 从位图对象中提取像素并比较数组。
  2. 将位图编码为 base64 字符串,然后比较

如果有人建议我使用OpenCV,那么请详细解释OpenCV的方法。我找不到任何合适的材料资源,OpenCV android Java教程,用于查找图像之间的相似性。

java android opencv image-processing bitmap
1个回答
0
投票

我终于实现了我想要的

  1. 将输入和存储的位图缩放为100x100。
  2. 将上述两张图的alpha层提取出来,用 bitmap.extractAlpha().
  3. 通过使用提取像素来计算输入的余弦相似度。getPixels();相似度将在-1到1的范围内。
  4. 如果 similarity > threshold (我的情况是0.6) ,然后返回 same 别的 different
© www.soinside.com 2019 - 2024. All rights reserved.