b2科目四模拟试题多少题驾考考爆了怎么补救
b2科目四模拟试题多少题 驾考考爆了怎么补救

Python图像识别以找到坐标(通过识别图片,鸦片点击坐标)

电脑杂谈  发布时间:2020-05-08 05:23:45  来源:网络整理

在天空寻找爱的坐标_在天空中寻找爱的坐标_如何寻找图片坐标点

***如果您只想了解图片的相似性,请看第一步

***如果您想了解appium如何基于图片识别点击坐标,则需要查看第一步,第二步和第三步

背景|进行UI测试时,我发现appium无法识别iOS自定义UI控件. 因此,考虑通过识别图片来找到坐标,然后通过单击坐标来解决问题

取决于python包| opencv,numpy,aircv

import aircv as ac
def matchImg(imgsrc,imgobj,confidencevalue=0.5):#imgsrc=原始图像,imgobj=待查找的图片
    imsrc = ac.imread(imgsrc)
    imobj = ac.imread(imgobj)
 
    match_result = ac.find_template(imsrc,imobj,confidence)  # {‘confidence‘: 0.5435812473297119, ‘rectangle‘: ((394, 384), (394, 416), (450, 384), (450, 416)), ‘result‘: (422.0, 400.0)}
    if match_result is not None:
        match_result[shape]=(imsrc.shape[1],imsrc.shape[0])#0为高,1为宽
    return match_result

说明: 通过aircv的find_template()方法返回匹配图片的坐标结果

在天空中寻找爱的坐标_在天空寻找爱的坐标_如何寻找图片坐标点

1. 条目:

find_template(原始图像imsrc,要找到的imobj,最小相似性置信度)

2. 返回结果:

{confidence: 0.5435812473297119, rectangle: ((394, 384), (394, 416), (450, 384), (450, 416)), result: (422.0, 400.0)

置信度: 匹配相似率

矩形: 匹配原始图像四边形的坐标

在天空寻找爱的坐标_在天空中寻找爱的坐标_如何寻找图片坐标点

结果: 在原始图片上匹配图片的中心坐标点,这就是我们要寻找的点击点

注意: 如果结果匹配置信度小于输入参数传递的相似性置信度,则将不返回任何内容,也将不返回任何字典

参考文件:

由于屏幕截图后PC上的分辨率与手机上的分辨率不同,并且第一步获得的坐标是屏幕截图在PC上的坐标点,因此通常要大得多比手机要多,所以它需要转换坐标

photo_position=self.driver.get_screenshot_as_file(imgfile)#截屏手机
 
x = self.driver.get_window_size()[width]
y = self.driver.get_window_size()[height]
size_width,size_height = x,y #获得手机d的宽高尺寸
 
confidencevalue = 0.8  # 定义相似度
position = matchImg(imsrc,imobj,confidence)# 用第一步的方法,实际就是find_template()方法
 
if position != None:
    x, y = position[result]
    shape_x, shape_y = tuple(map(int,position[shape]))
    position_x,position_y=int(photo_position_x+(photo_width/shape_x*x)),int(photo_position_y+(photo_height/shape_y*y))
    self.driver.tap([(position_x, position_y)])

想法描述:

如何寻找图片坐标点_在天空中寻找爱的坐标_在天空寻找爱的坐标

1. 通过appium方法driver.get_screenshot_as_file(文件名)获取屏幕截图

2. 通过appium的get_window_size获取宽度和高度字典,然后获取宽度和高度

3. 将PC上的屏幕截图与获取的手机屏幕截图进行匹配,然后返回匹配结果的坐标和PC上原始图像的大小

4. 通过PC上的屏幕截图如何寻找图片坐标点,手机屏幕的纵横比以及PC上的实际坐标点,获取手机上的实际坐标点.

5. 最后,通过appium方法drive.tap([x,y])单击手机上的坐标

注意: 为了匹配结果的准确性,最好在PC上拍摄原始图像1: 1的屏幕截图,请勿放大,否则相似性会更差

由于某些图片太小,如果它们在大图片上匹配,则它们通常不匹配. 如果您知道图片的大概位置如何寻找图片坐标点,则可以截取该区域的屏幕截图,然后进行匹配

有两种方法可以截取区域:

1. 根据appium定位的元素截屏

driver.find_element(*element).screenshot(imgfile)

2. 根据屏幕快照矩形左上角的坐标(x,y百分比)和宽度(高度)来截屏

Image.open(imgfile).crop((pc_location_x,pc_location_y,pc_location_x+pc_width,pc_location_y+pc_height)).save(imgfile)

首先捕获整个手机屏幕,然后根据百分比以及PC上屏幕截图的宽度和高度进行计算. 通过PILcrop()方法获取屏幕截图,以获取屏幕截图上的坐标

然后根据PC和手机上图片的比例获得手机上的坐标


本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/tongxinshuyu/article-202598-1.html

    相关阅读
      发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

      热点图片
      拼命载入中...