通过Python连接手机,并截图手机屏幕保存到电脑(android)

首先下载adb

可以到百度网盘链接下载:https://pan.baidu.com/s/1htbYtq0

或者自己去搜索引擎搜索,网上一大堆

将下载的压缩包解压,如图:



然后再系统中添加环境变量:

右键我的电脑- 属性-高级系统设置-高级-环境变量

将Path中添加adb.exe的路径:比如我的是G:\android\adb



然后用usb连接手机,且手机打开USB调试选项

通过命令行adb devices查看连接的设备



通过Python的subprocess模块来模拟命令行操作

[python]  view plain  copy
  1. import subprocess  
  2.   
  3. class Screenshot():#截取手机屏幕并保存到电脑  
  4.     def __init__(self):  
  5.         #查看连接的手机  
  6.         connect=subprocess.Popen("adb devices",stderr=subprocess.PIPE,stdout=subprocess.PIPE,shell=True)  
  7.         stdout,stderr=connect.communicate()   #获取返回命令  
  8.         #输出执行命令结果结果  
  9.         stdout=stdout.decode("utf-8")  
  10.         stderr=stderr.decode("utf-8")  
  11.         print(stdout)  
  12.         print(stderr)  
  13.   
  14.     def screen(self,cmd):#在手机上截图  
  15.         screenExecute=subprocess.Popen(str(cmd),stderr=subprocess.PIPE,stdout=subprocess.PIPE,shell=True)  
  16.         stdout, stderr = screenExecute.communicate()  
  17.         # 输出执行命令结果结果  
  18.         stdout = stdout.decode("utf-8")  
  19.         stderr = stderr.decode("utf-8")  
  20.         print(stdout)  
  21.         print(stderr)  
  22.   
  23.     def saveComputer(self,cmd):#将截图保存到电脑  
  24.         screenExecute = subprocess.Popen(str(cmd), stderr=subprocess.PIPE, stdout=subprocess.PIPE, shell=True)  
  25.         stdout, stderr = screenExecute.communicate()  
  26.         stdout = stdout.decode("utf-8")  
  27.         stderr = stderr.decode("utf-8")  
  28.         # 输出执行命令结果结果  
  29.         stdout = stdout.decode("utf-8")  
  30.         stderr = stderr.decode("utf-8")  
  31.         print(stdout)  
  32.         print(stderr)  
  33.   
  34. cmd1=r"adb shell /system/bin/screencap -p /sdcard/3.png"       #命令1:在手机上截图3.png为图片名  
  35. cmd2=r"adb pull /sdcard/3.png d:/3.png"                        #命令2:将图片保存到电脑 d:/3.png为要保存到电脑的路径  
  36. screen=Screenshot()  
  37. screen.screen(cmd1)  
  38. screen.saveComputer(cmd2)  
要在Python中处理安卓手机截图进行对比,通常可以分为以下几个步骤: ### 1. 获取安卓设备的屏幕截图 你可以通过ADB(Android Debug Bridge)工具从安卓设备获取屏幕截图将其保存到本地计算机上。这需要确保你的电脑已经安装了ADB且能够识别连接的安卓设备。 ```bash adb shell screencap -p /sdcard/screen.png adb pull /sdcard/screen.png ./ ``` 上述命令会将截取的画面存放到名为`screen.png`文件里,下载至当前目录下。 如果你想要更简便的方式,在某些情况下也可以利用第三方库如`uiautomator2`等自动化测试框架提供的API直接抓图而无需手动输入指令。 #### 使用 `uiautomator2` 首先得安装该库: ```shell pip install uiautomator2 --upgrade ``` 然后编写简单的脚本调用拍照功能: ```python import uiautomator2 as u2 d = u2.connect() # 连接默认的第一台已授权USB调试模式下的android设备 screenshot_path = "path/to/save/screenshot.png" d.screenshot(screenshot_path) print(f"Screenshot saved to {screenshot_path}") ``` ### 2. 图像预处理与特征提取 对于图像比较之前,建议先做一些基本预处理工作例如裁剪、缩放、灰度化转换等等;之后再考虑是否采用直方图匹配算法或者是基于模板匹配的方式来寻找相似点。 如果涉及到对UI元素位置精度较高的场景,则推荐使用深度学习模型来进行像素级别的比对分析。 常用的方法包括但不限于: - **结构相似性指数 (SSIM)** 这是一种衡量两幅图片之间视觉差异程度的标准之一,其值越接近于1代表两张照片就越相像。 - **均方误差(MSE)** 计算两个向量间平方差之和的一种距离度量方式,数值越小说明差距也相应减少。 为了简化操作流程,还可以借助现成开源项目比如OpenCV-Python模块完成具体的任务实现: ```python from skimage.metrics import structural_similarity as ssim import imutils import cv2 def compare_images(imageA, imageB): grayA = cv2.cvtColor(imageA, cv2.COLOR_BGR2GRAY) grayB = cv2.cvtColor(imageB, cv2.COLOR_BGR2GRAY) score, diff = ssim(grayA, grayB, full=True) print("Similarity Score:",score) # 加载图片 image1=cv2.imread('path_to_first_image') image2=cv2.imread('path_to_second_image') compare_images(image1,image2) ``` 以上示例展示了如何加载一对图像对它们执行结构性相似性的评估。 ### 注意事项 - 执行ADB命令前务必保证PC端同移动终端处在同一局域网环境下; - 若是初次尝试运行上面提到的相关软件包,请参照官方文档指导预先做好环境配置准备; - 对不同分辨率或比例的照片做对照时需额外小心调整尺寸大小以保持一致性; 希望这篇概述对你有所帮助!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值