2022-1-24 突然又想通过物理方式去点击钓鱼(ios 端没模拟器)
ipad 上的画面能通过爱思助手录制直播同步到电脑屏幕上而且无延迟
硬件方面后面再考虑吧,还是得再看看代码。
sg90 舵机
mac 上不能用 PIL win32gui
OS X Screen capture from Python/PyObjC
b 站上的 hsv 识别
HSV介绍
视频 2
在Mac中使用Python获取屏幕截图
用 pyscreen(速度感人)
import pyscreenshot as ImageGrab
# fullscreen
im=ImageGrab.grab()
im.show()
# part of the screen
#im=ImageGrab.grab(bbox=(10,10,510,510)) # X1,Y1,X2,Y2
#im.show()
另一种刚看到不过没试添加链接描述
- 搬运于SO中文参考 - www.soinside.com
Question : what could preform better than ImageGrab.grab() on a Mac
我做了MSS,PIL和pyscreenshot之间的测试和测量的平均花费的时间采取了各种尺寸图像的争夺,报道以毫秒为单位的时间。Answer: 看来,mss远远超过其他在Mac上。要捕捉800x400切片屏幕彩信需要15毫秒,而另外两个取300-400ms。这对其他两个66fps彩信或3FPS之间的差异。
import numpy as np
from time import time
resolutions = [
(0, 0, 100,100),(0, 0, 200,100),
(0, 0, 200,200),(0, 0, 400,200),
(0, 0, 400,400),(0, 0, 800,400)
]
import pyscreenshot as ImageGrab
import cv2
def show(nparray):
cv2.imshow('window',cv2.cvtColor(nparray, cv2.COLOR_BGR2RGB))
# key controls in a displayed window
# if cv2.waitKey(25) & 0xFF == ord('q'):
# cv2.destroyAllWindows()
def mss_test(shape) :
average = time()
import mss
sct = mss.mss()
mon = {"top": shape[0], "left": shape[1], "width": shape[2]-shape[1], "height": shape[3]-shape[0]}
for _ in range(5):
printscreen = np.asarray(sct.grab(mon))
average_ms = int(1000*(time()-average)/5.)
return average_ms, printscreen.shape
def pil_test(shape) :
average = time()
from PIL import ImageGrab
for _ in range(5):
printscreen = np.array(ImageGrab.grab(bbox=shape))
average_ms = int(1000*(time()-average)/5.)
return average_ms, printscreen.shape
def pyscreenshot_test(shape):
average = time()
import pyscreenshot as ImageGrab
for _ in range(5):
printscreen = np.asarray( ImageGrab.grab(bbox=shape) )
average_ms = int(1000*(time()-average)/5.)
return average_ms, printscreen.shape
named_function_pair = zip("mss_test,pil_test,pyscreenshot_test".split(","),
[mss_test,pil_test,pyscreenshot_test])
for name,function in named_function_pair:
results = [ function(res) for res in resolutions ]
print("Speed results for using",name)
for res,result in zip(resolutions,results) :
speed,shape = result
print(res,"took",speed,"ms, produced shaped",shape)
# https://blog.youkuaiyun.com/fjswcjswzy/article/details/105843455
import cv2
import pyautogui
import numpy as np
from matplotlib import pyplot as plt
import time
#下钩 x为勾的位置
def drawgou(x):
pyautogui.moveTo(x)
pyautogui.click()
# 截图
def jietu():
import pyscreenshot as ImageGrab
im=ImageGrab.grab(bbox=(0,0,1400,1800)) # X1,Y1,X2,Y2
im.show()
#判断 hsv
image = cv2.imread('im')
HSV=cv2.cvtColor(image,cv2.COLOR_BGR2HSV)
def getpos(event,x,y,flags,param):
if event==cv2.EVENT_LBUTTONDOWN: #定义一个鼠标左键按下去的事件
print(HSV[y,x])
cv2.imshow("imageHSV",HSV)
#cv2.imshow('image',image) #显示原图
cv2.setMouseCallback("imageHSV",getpos)
cv2.waitKey(0)
#关闭截图
def closetu():
drawgou((29,51))
jietu()
#im = 'me.JPG'
#drawgou(())
# time.sleep(4)
# closetu()
更新,偶然刷到用 numpy 来代替 imread
def jietu():
import pyscreenshot as ImageGrab
import numpy as np
image = np.array(ImageGrab.grab(bbox=(0, 0,1400, 1800)))
HSV=cv2.cvtColor(image,cv2.COLOR_BGR2HSV)
def getpos(event,x,y,flags,param):
if event==cv2.EVENT_LBUTTONDOWN: #定义一个鼠标左键按下去的事件
print(HSV[y,x])
cv2.imshow("imageHSV",HSV)
#cv2.imshow('image',image) #显示原图
cv2.setMouseCallback("imageHSV",getpos)
cv2.waitKey(0)
jietu()
初步能实现的是第一杆,但是因为用截图再判断 hsv 速度太慢,有时候鱼会跑掉…
第二杆因为时间关系,要准备考研,没时间学了。