大家已经熟知了著名的TemplateMatching算法,可以实现在大图中找小图。现实使用中可能会苦恼TM算法强依赖于OpenCV的动态链接库,环境稍有问题就会运行失败,因此,有人会问了,有没有纯Java或者C#的方法来处理得到图片检索的功能呢?答案是肯定的。下面介绍一种纯Java的方法:
首先,定义一张源图(此处叫小图),再定义一张新截取的图(此处叫大图),然后还是原先介绍过的操作,必然第一步要将RGB值读进来。(图像对比很大程度上是像素数据的处理,记住这句话)
确定主要方法然后,就可以在大图中找小图了!找的方法如果是从源图的左上角到右下角硬找的话,估计机器耗时会很久,不推荐这种方法;下面介绍一种稍微巧妙的方式,将小图的四个角的像素对象留下,在大图中按4个角的色值去检索,当然这个检索的结果可能返回一个x,y也可能返回一堆的candidate。因此接下来,需要在发现图中去进行全面比对,废话不多说,核心代码如下:
请勿转载总结:此法比较适合在同一种分辨率为前提的图形中进行比较,小图尺寸无缩放且同比例截取自源图,稍有变化则不灵,但好处是精准。灵活性不够。为了提高灵活性则需要考虑在小图全局比较的时候引入阈值的概念,譬如95%以上的相似度则认为检索成功等(此处稍改代码即可实现),再往上提高则需要做分辨率的文章了,小编目前还没有成型的Demo,留下作业以后找机会实现。
网友评论