python +opencv 根据图片定位进行UI自动化
python +opencv 根据图片定位进行UI自动化
前言:
做过移动端ui自动化的小伙伴,就会发现很多控件的元素是一样的或者是找不到的,为了解决这个痛点,于是通过图片灰度处理返回坐标x,y找到控件的位置。再结合pytest+接口+UI断言整体项目思路。
1.接下来我们主要说一下基于opencv图片识别寻找控件坐标,pytest和接口不会的同学请看我的接口和pytest文章
2. 我们使用两个图,一个是移动端截图,一个是控件的图,如下:
- 接下来我们直接上代码
import cv2
import os
import time#获取移动端图片
def screencap():cmd = "adb root"cmd1 = "adb shell /system/bin/screencap -p /sdcard/da.png"cmd2 = "adb pull /sdcard/da.png "os.system(cmd)time.sleep(1)os.system(cmd1)time.sleep(2)os.system(cmd2)def _tran_canny(image):"""消除噪声"""image = cv2.GaussianBlur(image, (3, 3), 0)return cv2.Canny(image, 50, 150)def detect_displacement(img_slider_path, image_background_path):"""detect displacement"""# # 参数0是灰度模式image = cv2.imread(img_slider_path, 0)template = cv2.imread(image_background_path, 0)# 寻找最佳匹配res = cv2.matchTemplate(_tran_canny(image), _tran_canny(template), cv2.TM_CCOEFF_NORMED)# 最小值,最大值,并得到最小值, 最大值的索引min_val, max_val, min_loc, max_loc = cv2.minMaxLoc(res)top_left = max_loc[0] # 横坐标# 展示圈出来的区域x, y = max_loc # 获取x,y位置坐标、print(max_loc)return max_loc# w, h = image.shape[::-1] # 宽高# cv2.rectangle(template, (x, y), (x + w, y + h), (7, 249, 151), 2)# return top_leftif __name__ == '__main__':screencap()image_location = detect_displacement('xiao.png', 'da.png')# 获取点击位置cmd = "adb shell input tap {x} {y}".format(x=image_location[0], y=image_location[1])# 模拟用户点击os.system(cmd)
4.本文使用的是ADB,也可结合uiautomator2,https://blog.csdn.net/huage926/article/details/118752071?spm=1001.2014.3001.5501。
python +opencv 根据图片定位进行UI自动化相关推荐
- Java 调用Python+Opencv实现图片定位
做过移动端ui自动化的小伙伴,就会发现很多控件的元素是一样的或者是找不到的,为了解决这个痛点,于是通过图片灰度处理返回坐标x,y找到控件的位置.再结合pytest+接口+UI断言整体项目思路. 1.接 ...
- Python+opencv实图片定位
# -*- coding: utf-8 -*- import cv2file=r'D:/Setting.png' #大图 temp=r'D:/Battery.png' #小图# 弹出图片后 CTRL+ ...
- python opencv调节图片亮度与对比度
python opencv调节图片亮度与对比度 亮度调整是将图像像素的强度整体变大/变小,对比度调整指的是图像暗处变得更暗,亮出变得更亮,从而拓宽某个区域内的显示精度. 创建两个滑动条分别调整对比度和 ...
- python opencv 得到图片路径image_path的宽wide、高heigh和深度deep
python opencv 得到图片路径image_path的宽wide.高heigh和深度deep 图片路径是:'1.jpg' 下面是具体代码: import cv2 #得到图片路径image_pa ...
- 2021-01-07 python opencv调节图片亮度与对比度
python opencv调节图片亮度与对比度 度调整是将图像像素的强度整体变大/变小,对比度调整指的是图像暗处变得更暗,亮出变得更亮,从而拓宽某个区域内的显示精度. 创建两个滑动条分别调整对比度和亮 ...
- Python笔记-pyautogui 图片定位
Python笔记-pyautogui 图片定位 import os import time import pyautogui pyautogui.PAUSE = 1def im_click():try ...
- Python OpenCV去除图片水印
问题描述 去除百度水印 1.jpg,背景简单 2.jpg,背景复杂 解决方案 安装 pip install opencv-python pip install numpy 方法一.OpenCV提取颜色 ...
- python opencv获取图片分辨率_python-opencv遍历图片像素,并对像素进行操作
看代码: def access_pixels(frame): print(frame.shape) #shape内包含三个元素:按顺序为高.宽.通道数 height = frame.shape[0] ...
- python opencv 裁剪图片_Python图片裁剪的两种方式——Pillow和OpenCV
在这篇文章里我们聊一下Python实现图片裁剪的两种方式,一种利用了Pillow,还有一种利用了OpenCV.两种方式都需要简单的几行代码,这可能也就是现在Python那么流行的原因吧. OpenCV ...
最新文章
- 《HTTP权威指南》– 5.Web服务器
- The TensorFlow library wasn‘t compiled to use SSE instructions, but these are available on your mach
- Linux的网络类型
- 类如何调用自己的私有成员_如何正确地给自己和团队成员贴标签?|衡量团队管理 20 讲视觉笔记 14...
- 基于单链表的生产者消费者问题
- android修改用户名和密码错误,Android应用开发Android Studio 修改用户名、密码、URL等操作教程...
- [转载] Python学习之Numpy
- 4G模块使用记录移远EC20、BC20
- linux_grep操作
- 第一行代码笔记-第五章
- ExtJS2.0开发与实践笔记[4]——Ext中的动画处理
- 西门子 Process Simulate学习笔记(一)
- 怎样设置和检测浏览器语言
- 计算机科学中的数学第一章答案,翻译《计算机科学与数学》第一章第四节:我们的公理...
- 远程桌面启动matlab
- 幂等矩阵(Idempotent matrix)
- 2020年中国儿童家具行业产量、市场规模发展现状及儿童家具企业竞争格局分析[图]
- 灼口综合征的症状这么多呢呀?!
- dw实时视图与网页不一样_视图窗口和oc实时预览内容显示范围不一样,不完全同步。...
- 怎样拿下SUN公司的SCJP认证?