在 Python OpenCV、PyAutoGui 中随机点击、点击位置、睡眠定时器和点击量

问题描述 投票:0回答:0

我一直在研究 YouTube 系列关于 OpenCV 对象检测的机器人 https://www.youtube.com/watch?v=FylRUEEWhCo&t=98s ...我一直在将这个系列中的概念应用到我自己的例子。

我已经到了可以实时成功定位对象的地步,并等待表示要单击哪个对象的特定事件。现在我想自动执行点击操作,但要进行各种随机化。对于每个对象/点击,我希望点击的位置是随机的(在目标对象内),该位置的点击次数是随机的(在 1 到 3 之间),点击后的睡眠定时器是随机(0.7-1 秒之间)。

经过大量搜索,似乎有一些 PyAutoGui 随机化函数可以使用(到目前为止,它们都需要使用 PyAutoGui 来检测图像,我不想要)。而且,看起来有一些惊人的 Numpy/Python 数学随机化是可能的。

需要注意的是,我的函数 findClickPositions 可以返回有关已识别为单击的框的各种属性。目前,它返回盒子的宽度和高度,以及盒子的中心点 x / 中心点 y。

我要重新列出需要随机化的事件,然后也放弃我正在进行的代码:

  • 目标对象内的随机位置
  • 该目标的点击次数(1-3 之间)
  • 点击后的睡眠计时器(0.7-1 秒之间)

我还要说我只涉足 Python,如果这里有遗漏的部分只是为了让这个循环工作,请随时提出建议,因为我可能不知道。非常感谢您提供的所有信息/建议。

while True:

        screenshot = sct.grab(bounding_box)
        img_np = np.array(screenshot) 
        image = cv2.cvtColor(img_np, cv2.TM_CCORR_NORMED)
        image = image[...,:3]

        fire = findClickPositions('fire_image.JPG', image, .8, 'rectangles')
        shoot = findClickPositions('shoot_button.JPG', image, .6, 'rectangles')
        reload = findClickPositions('reload_button.JPG', image, .8, 'rectangles')
        counter = findClickPositions('fire_counter_button.JPG', image, .8, 'rectangles')

        if fire:
            
            ## Here code needs to go to a random spot in the 'counter' object 
            ## Click 1-3 times within that object
            ## Sleep between .7-1 seconds

        elif reload:
            
            ## Here code needs to go to a random spot in the 'reload' object 
            ## Click 1-3 times within that object
            ## Sleep between .7-1 seconds

        else:
            
            ## Here code needs to go to a random spot in the 'shoot' object 
            ## Click 1-3 times within that object
            ## Sleep between .7-1 seconds


        if (cv2.waitKey(1) & 0xFF) == ord('q'):
            cv2.destroyAllWindows()
        break
python ui-automation pyautogui
© www.soinside.com 2019 - 2024. All rights reserved.