如何从android屏幕中获取X Y像素的颜色,尽可能快地使用adb或其他解决方案



我试着用python写一些自动应用程序,我必须尽快从移动设备检查颜色像素。我试着截图,从照片中提取像素。但是它太慢了,

谢谢!

这取决于你的用例有多快。但是,这是使用AndroidViewClient:

的初始想法。
#! /usr/bin/env python3
import random
import time
from com.dtmilano.android.viewclient import ViewClient
device, serialno = ViewClient.connectToDeviceOrExit()
w = device.getProperty('display.width')
h = device.getProperty('display.height')
for n in range(20):
x = random.randint(0, w)
y = random.randint(0, h)
start = time.time()
p = device.takeSnapshot(reconnect=True).getpixel((x, y))
print(f'{time.time() - start:.4f}: @({x:4}, {y:4}) -> {p}')

所得结果

0.4690: @( 795,  596) -> (245, 166, 194, 255)
0.5251: @( 330, 1580) -> (192, 102, 144, 255)
0.3421: @(  64, 1582) -> (202, 110, 152, 255)
0.3729: @( 219,  869) -> (248, 174, 201, 255)
0.3395: @( 794, 1871) -> (113, 41, 113, 255)
0.3349: @( 620,  388) -> (243, 169, 198, 255)
0.3432: @( 154,  827) -> (249, 178, 203, 255)
0.2958: @( 336,  956) -> (244, 165, 196, 255)
0.3586: @(  20, 1613) -> (200, 105, 149, 255)
0.3397: @( 119, 1692) -> (199, 89, 136, 255)
0.3915: @( 825,  942) -> (236, 151, 188, 255)
0.3343: @( 654,  306) -> (244, 170, 202, 255)
0.3416: @(  24, 1661) -> (202, 97, 144, 255)
0.4386: @( 788, 1273) -> (223, 134, 171, 255)
0.3927: @( 378,  128) -> (217, 158, 186, 255)
0.3229: @( 273, 1261) -> (235, 152, 183, 255)
0.2288: @(  19, 1567) -> (208, 116, 157, 255)
0.2286: @(   0, 1522) -> (220, 130, 164, 255)
0.3781: @( 728, 1323) -> (222, 132, 168, 255)
0.3954: @( 793, 1755) -> (154, 62, 118, 255)

有一个转换到PIL映像的过程,这个映像仍然可以被删除以提高一点性能。

此外,如果之前的结果不够,使用cullebraterster2 -public可以加快一些速度。

相关内容

最新更新