найти обнаружение opencv, используя pyautogui - PullRequest
0 голосов
/ 20 января 2019

, поэтому я создаю бота, который обнаруживает значки на экране и перемещает мышь к обнаруженному значку, выбранному пользователем. Вот как выглядит код:

import numpy as np
import pyautogui
import cv2
from PIL import ImageGrab

fourcc = cv2.VideoWriter_fourcc(*'XVID')

face_csc = cv2.CascadeClassifier('improved_cascade.xml')

out = cv2.VideoWriter("output.avi", fourcc, 5.0, (1366, 768))

while True:

    img = ImageGrab.grab(bbox=None)
    # convert image to numpy array
    img_np = np.array(img)
    # convert color space from BGR to RGB
    frame = cv2.cvtColor(img_np, cv2.COLOR_BGR2RGB)
    # show image on OpenCV frame
    faces = face_csc.detectMultiScale(frame, 1.1 , 15)

    for (x,y,w,h) in faces:
        detected_icon = cv2.rectangle(frame,(x,y),(x+w,y+h), (255,0,0), 2)
        roi_gray = frame[y:y+h, x:x+w]
        roi_color = img_np[y:y+h,x:x+w]
        cv2.putText(frame,'icon',(x,y),cv2.FONT_HERSHEY_TRIPLEX,0.8,(0,0,255),1)
        cv2.imshow("stream", frame)
    # write frame to video writer
    out.write(frame)
    if cv2.waitKey(1) & 0xFF == ord('q'):
        break

out.release() 
cv2.destroyAllWindows()

но у меня возникают проблемы с тем, чтобы щелкнуть мышью по значку opencv обнаружен. например: допустим, я настроил свою программу так, чтобы при обнаружении хрома на экране она автоматически наводила курсор мыши на значок и щелкала по нему. как я смогу это сделать? спасибо

1 Ответ

0 голосов
/ 26 января 2019

У меня нет удобного окна Windows для запуска ImageGrab, но предполагается, что он создает снимок экрана с той же шириной и высотой (в пикселях), что и реальный экран, учитывая, что и Pyautogui, и OpenCV помещают начало координат в верхнюю часть слева перевод на Pyautogui должен быть простым:

for (x,y,w,h) in faces:
    center_x = x + 0.5 * w
    center_y = y + 0.5 * h
    pyautogui.click(center_x, center_y)

Телепортирует указатель мыши в центр прямоугольника объекта и щелкает по нему. Если вы хотите имитировать движения и щелчки мыши, похожие на человека, у Pyautogui есть несколько инструментов для этой цели.

...