Python摩尔庄园自动钓鱼(macOS)

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.csdn.net/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 速度太慢,有时候鱼会跑掉…
第二杆因为时间关系,要准备考研,没时间学了。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Sink Arsenic

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值