OpenCV 中的 templateMatch 可用于区域找图是怎么使用的?

4

主题

0

回帖

14

积分

新手上路

积分
14



OpenCV 里的 templateMatch(模板匹配)能够用于区域找图,那么它具体是怎么使用的呢?

举报 回复

28

主题

184

回帖

581

积分

管理员

积分
581


名称

opencv.templateMatch

作用

在区域范围内,查找图片位置,,查找相同1~n个特征

权限

  • root
  • 键鼠
  • 无障碍

语法

opencv.templateMatch(mat,colour,Color_deviation,deviation,sim)

参数

类型

是/否

说明

mat

对象

mat格式截图对象

pic

数组

字符数组,64图片数据格式为[“图片1”,”图片2”]

sim

浮点

双精度浮点数,相似度,取值范围0-1

range

数组

双精度浮点数数组,取值范围0-1,需要查找的百分比范围,格式为

[

查找区域左上X坐标,

查找区域左上Y坐标,

查找区域右下X坐标,

查找区域右下Y坐标

]

如:[0.03360,0.14222,0.08893,0.17667]

mode

布尔

是否返回一个最优的数据,true最优,false返回多个数据

返回

类型

是/否

说明

数组/null

数组

成功

目标数据数组

失败

null

名称

screen.screenShot

作用

截图并压缩图片,配合上面函数使用

权限

  • root
  • 键鼠
  • 无障碍

语法

screen.screenShot(width,height,quality)

参数

类型

是/否

说明

width

整数

压缩图片宽度,注意这个宽度不是屏幕分辨率宽度

height

整数

压缩图片高度,注意这个高度不是屏幕分辨率高度

quality

数组

压缩图片清晰度,0~100

返回

类型

是/否

说明

对象/null

对象

成功

位图对象

失败

null

对象方法

类型

是/否

说明

.getMat();

把位图转mat格式,配合screen.screenShot使用

返回

类型

是/否

说明

对象/null

对象

成功

mat格式对象

失败

null

注意


举报 回复

28

主题

184

回帖

581

积分

管理员

积分
581
  1. var mat=screen.screenShot(720,1280,100).getMat();
  2. var seek = opencv.templateMatch(mat, ["图片1","图片2"],0.9, [0.03360,0.14222,0.08893,0.17667],true);
  3. if (seek) {
  4.     var place = seek[0].getRealRect();
  5.     var x = place.getCenterX();
  6.     var y = place.getCenterY();
  7.     printl(x+","+y)
  8. } else {
  9.     printl("未找到了");
  10. }
复制代码
  1. var mat=screen.screenShot(720,1280,100).getMat();
  2. var seek = opencv.templateMatch(mat, ["图片1","图片2"],0.9, [0.03360,0.14222,0.08893,0.17667],true);
  3. if (seek) {
  4.      seek[0].click();  //点击
  5. } else {
  6.     printl("未找到了");
  7. }
复制代码


举报 回复