OpenCV For Android实现特征点匹配(Features2d.drawMatches)

文章介绍了如何在Android项目中利用OpenCV4.5.5SDK进行特征点匹配,特别是针对模板匹配方法Imgproc.matchTemplate的局限性,转向使用Features2d.drawMatches方法,结合BRISK算法来实现更灵活的图像识别。开发者通过检测和计算两个图像的特征点,使用FlannBasedMatcher进行匹配,并通过找到最佳匹配点来确定目标位置。
摘要由CSDN通过智能技术生成

基于OpenCV的AndroidSDK实现的特征点匹配案例,其中SDK的版本为4.5.5

SDK下载

OpenCV的SDK这里下载

matchTemplate方案的试错

自己一个项目需要使用图像匹配,其实就是从一个大截图中截出来一个小按钮,然后去识别这个按钮的位置然后做点击。一开始使用的是模板匹配,也就是Imgproc._matchTemplate()_方法,但使用后发现该方法对图片的分辨率要求过高(其实还有旋转、角度等限制),即时是从大图中截图出来的小图,也是需要分辨率对得上才能匹配成功(也就是说不同分辨率的手机截图出来的文件不一定能匹配成功)。

决定使用drawMatches

后来找了好久的资料,终于在OpenCV的官网文档找到一个基于特征点匹配的方法(Features2d._drawMatches()_),不受限分辨率、角度、旋转等限制(虽然我这个项目不涉及到角度和旋转)。
要注意的是这个方法可以使用好几种不同的算法(BRISK、ORB、KAZE、AKAZE、MSER等),这里我最终选用的是BRISK,关于这几种算法的优劣可以百度,我是参考了链接

代码实现

// image2Bitmap:截图出来的Bitmap对象
// templateBitmap:要匹配的按钮的Bitmap对象
// src:截图的Mat对象
// template:要匹配的按钮的Mat对象

if (image2Bitmap != null) {
  LogUtils.d("截图完成,准备匹配截图");
  src = new Mat()
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值