Идея состоит в том, чтобы создать своего рода основной файл, в котором я могу повторно использоватьDetect_objects(изображение, цвет в HSV) в других файлах, поэтому я не делаю это снова.
Код: Выделить всё
from PIL import Image
import cv2
import numpy as np
import pyautogui
import win32gui
def detectar_objetos(imagen, colores_hsv):
hsv = cv2.cvtColor(imagen, cv2.COLOR_BGR2HSV)
mascaras = []
for color in colores_hsv:
lower = np.array(color)
upper = np.array(color)
mask = cv2.inRange(hsv, lower, upper)
mascaras.append(mask)
contornos = []
for mask in mascaras:
cnts, _ = cv2.findContours(mask, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
contornos.extend(cnts)
for cnt in contornos:
M = cv2.moments(cnt)
cx = int(M['m10']/M['m00'])
cy = int(M['m01']/M['m00'])
pyautogui.moveTo(cx, cy, duration=0.25)
pyautogui.click()
# print("Objeto encontrado en:", cx, cy)
def encontrar_ventana_runelite():
for win in pyautogui.getAllWindows():
if "Runelite" in win.title:
return win
return None
def capturar_pantalla_runelite(ventana):
if ventana is None:
return None
win32gui.SetForegroundWindow(ventana.handle)
x, y, w, h = win32gui.GetWindowRect(ventana.handle)
return pyautogui.screenshot(region=(x, y, w, h))
ventana_runelite = encontrar_ventana_runelite()
imagen = capturar_pantalla_runelite(ventana_runelite)
imagen = np.array(imagen)
imagen = cv2.cvtColor(imagen, cv2.COLOR_RGB2BGR)
detectar_objetos(imagen, (60, 100, 100))
Код: Выделить всё
imagen = cv2.cvtColor(imagen, cv2.COLOR_RGB2BGR)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
cv2.error: OpenCV(4.10.0) :-1: error: (-5:Bad argument) in function 'cvtColor'
> Overload resolution failed:
> - src data type = object is not supported
> - Expected Ptr for argument 'src'
Подробнее здесь: https://stackoverflow.com/questions/790 ... ing-opencv
Мобильная версия