Объект не поддерживается при использовании opencvPython

Программы на Python
Ответить
Anonymous
 Объект не поддерживается при использовании opencv

Сообщение Anonymous »

Я попытался создать небольшой скрипт распознавания цвета, который бы распознавал квадраты или контуры внутри игры и нажимал на их центр. Я очень мало знаю о Python и OpenCV, и когда я запускаю скрипт, он показывает ошибку неподдерживаемого формата. Я не могу найти ошибку.
Идея состоит в том, чтобы создать своего рода основной файл, в котором я могу повторно использовать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'
при запуске скрипта он должен проверить, находится ли окно игры в фокусе, а затем сделать снимок экрана, чтобы распознать, что запрашивается дляDetect_objects(изображение, цвет в HSV) > и если TRUE, он направляет указатель мыши на эти координаты и выполняет щелчок.

Подробнее здесь: https://stackoverflow.com/questions/790 ... ing-opencv
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»