方案一
一种方法是先通过 adb screencap
将截屏保存到手机里。再通过 adb pull
将图片从手机传输到本地,具体命令如下:
adb screencap -p > /sdcard/screen.png
adb pull /sdcard/screen.png ./screen.png
然后再用 OpenCV 读取图片即可使用。
不过对于需要直接操作图片的情况,这个方法就有点多此一举了。直接传输流数据的方案二就更为合适。
方案二
获取文件数据
screencap -p
可以将截屏的数据流直接输出,尝试运行了如下adb命令, 确实得到了屏幕截图:
adb shell screencap -p > /sdcard/screen.png
这样就可以通过 stdout
来获取图片了,尝试通过 Python 获取截屏并保存:
#adb调用获取截图数据流, ps: 127.0.0.1:7555 为手机的端口号,这里我使用模拟器来测试
process = subprocess.Popen(
['adb', '-s', '127.0.0.1:7555', 'shell', 'screencap', '-p'],
stdin=subprocess.PIPE,
stdout=subprocess.PIPE,
stderr=subprocess.PIPE,
)
stdout = proc.stdout.read()
#保存图片
with open('./