autojs查找图片相似轮廓
2021-07-09 本文已影响0人
牙叔教程
牙叔教程 简单易懂
使用场景
查找和已有图片相似的轮廓
效果展示
查找轮廓结果

原图

要查找的图片

autojs版本
8.8.16-0
autojs自带opencv3.4.3
脚本简介
主要使用matchShapes, 比较两个形状的相似度,
第一个参数是待匹配的物体1,第二个是待匹配的物体2,
最重要的是一定要可视化, opencv支持画任何图形, 也支持文字
查找相似轮廓步骤讲解
1. 观察图片有哪些轮廓可用

2. 我们要找的是右上角的爱心, 原图裁剪爱心, 看一下爱心的轮廓

3. 我们注意比较轮廓, matchShapes返回一个距离, 我们取2以下, 并且画出数值

4. 有太多轮廓相似, 并且有些轮廓明显就不相似, 所有我们加上区域维度, 比如只要右边的

5. 这个人头是圆形的, 怎么比心形还相似呢? (相似度越低越相似)
百度了一下, 说是matchShapes参数传错, 正常返回值最大是1, 最小是0,
把matchShapes参数改一下, 相似度调整为0.03

6. 到此为止, 就找到爱心的轮廓了
如果还是有多个轮廓, 我们可以继续添加维度, 比如轮廓的面积, 长宽比, 颜色, 宽高,
更复杂一点可以配合其他更明显的轮廓的相对位置
处理图片的大概步骤
读取图片--> 高斯模糊--> 灰度--> 二值化--> findContours-->
matchShapes-->minAreaRect--> contourArea--> drawContours
声明
部分内容来自网络
本教程仅用于学习, 禁止用于其他用途