如何用c#识别图像B中的图像A

本文关键字:图像 识别 何用 | 更新日期: 2023-09-27 18:13:35

我需要一点帮助在Windows窗体。我想写一个代码,如果位图图像a在位图图像B中返回true,例如:B=截图,a =一小部分截图(图标)。如果B中包含A,程序返回True,如果不包含A,程序返回False。有谁知道怎么做吗

如何用c#识别图像B中的图像A

这可以通过使用特征检测算法在OpenCV中完成。

注意,SURF算法不是开源的,所以如果这是一个商业应用程序,你将需要许可它或切换到不同的算法(FAST/FREAK)。

官方示例是用C编写的,但这里有几个使用。net语言的Emgu包装器的SURF和FAST示例。

还有一个完整的iOS示例,其中包括我为特征检测和光流跟踪贡献的一些(非常糟糕的)编写的代码。

希望对你有帮助。

——有所

如果匹配是精确的像素到像素,这并不困难。一种实现方法(使用内存锁定的位图来加速):1)利用哈希将采样位图的每一列压缩成单个32位数字,使问题一维化。计算屏幕截图中所有相关像素的哈希值(哈希值应该是滚动哈希值,以提高计算效率)。2)使用一些字符串搜索算法查找样本哈希子字符串。3)验证哈希匹配全像素逐像素比较