我一直在研究 YouTube 系列关于 OpenCV 对象检测的机器人 https://www.youtube.com/watch?v=FylRUEEWhCo&t=98s ...我一直在将这个系列中的概念应用到我自己的例子。
我已经到了可以实时成功定位对象的地步,并等待表示要单击哪个对象的特定事件。现在我想自动执行点击操作,但要进行各种随机化。对于每个对象/点击,我希望点击的位置是随机的(在目标对象内),该位置的点击次数是随机的(在 1 到 3 之间),点击后的睡眠定时器是随机(0.7-1 秒之间)。
经过大量搜索,似乎有一些 PyAutoGui 随机化函数可以使用(到目前为止,它们都需要使用 PyAutoGui 来检测图像,我不想要)。而且,看起来有一些惊人的 Numpy/Python 数学随机化是可能的。
需要注意的是,我的函数 findClickPositions 可以返回有关已识别为单击的框的各种属性。目前,它返回盒子的宽度和高度,以及盒子的中心点 x / 中心点 y。
我要重新列出需要随机化的事件,然后也放弃我正在进行的代码:
我还要说我只涉足 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