问题描述
我需要确认两个移动用户之间的同步,我想执行以下操作:第一个用户在屏幕上绘制一些图案(绘制一些具体的东西,如房屋或一些抽象线条)并且其他用户必须绘制相同的图片。
当然,生成的图形/ base64将永远不会相同,但是如何进行比较以了解这两种模式的相似程度?
示例:确认上下图相同
解决方法
对于我想做的一个问题,这是非常大的尝试,但是我会决定在某些方面着手进行此类工作:
您将必须确定许多相似的参数,例如:
- 2条线之间的偏移量是多少(就像您画的w一样,最后的笔画稍宽,所以太宽了)
- 大小重要吗? w和W相同吗?
- 图纸的位置重要吗?左上角的w和右下角的w是否构成相似的图像?两个相似的图形之间允许有多少距离。
- ABCDEFGHI与ABCDEFGH相似,允许有多少差异
- 不透明度很重要吗?你好与 hello 一样吗?从您的图形看来,您假设打招呼与 hello 相似。
- 形状重要吗?垂直的问好与水平的问好吗?
我将采用以下方法:
- 确定2个图形的起点(也许从最左端开始,并标识一个或多个独立图形,例如,周围有很多小圆圈)
- 相应地移动,并保留一个表示上述两点之间的差异的实体。
您的核心工作是移动和比较引擎,比较是在同一部分“方向”上进行的。比较圆形时可能会出现问题。但是,当方向变化大于特定程度时,您可以切换比较的对象(例如,超过30度会使您脱离该形状并移动以比较下一个对象)。
还必须考虑到有多个通往图纸的出口路线的情况,因此您将不得不启动另一个比较线程,同时保留一个表示已通过的实体的实体,以免进入无限循环。
这个故事的士气很高,而且没有简单易用的api可以为您做到这一点:)。
,从我的角度来看,我认为您可以使用两种方法。 @Ali在回答中说的第一个,处理了很多参数,案例和很多意外的事情!
第二种方法,我更喜欢。
您说:
我需要确认两个移动用户之间的同步
我可以猜想您有这个应用程序的后端,并将当前图像传递到后端,并使用像Open CV这样的工具/库对其进行处理,以比较两个图像并测量相似度。因此,应用程序会返回类似度为 96%的结果。
最后,我认为这个问题太笼统了!