Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Написать код в питоне чтобы, когда находит цвет пикселя красный делает одно действие, когда другой цвет делает иное

Алексей Гнутов Ученик (92), на голосовании 3 недели назад
Находит красный цвет цыфры у него к примеру [100.100.100] он на него кликает мышкой потом нажимает q
Видит цвет ярко красный цыфры к примеру [150.150.150] кликает на него и жмет enter два раза с задержкой в 2 секунды этот цвет приоритнее красного. т. е когда этот цвет исчезает он начинает опять искать красный
Голосование за лучший ответ
Великий Тире Гуру (3245) 1 месяц назад
python
import pyautogui
import numpy as np
import time

RED_COLOR = (100, 100, 100)
BRIGHT_RED_COLOR = (150, 150, 150)

def find_color(target_color, tolerance=20):
width, height = pyautogui.size()
screenshot = pyautogui.screenshot()
screenshot_np = np.array(screenshot)

for x in range(width):
for y in range(height):
pixel = screenshot_np[y, x]
if all(abs(pixel[i] - target_color[i]) <= tolerance for i in range(3)):
return x, y
return None

def main():
while True:
position = find_color(BRIGHT_RED_COLOR)
if position:
pyautogui.click (position[0], position[1])
time.sleep(0.1)
pyautogui.press ('enter')
time.sleep(2)
pyautogui.press ('enter')
time.sleep(2)
else:
position = find_color(RED_COLOR)
if position:
pyautogui.click (position[0], position[1])
pyautogui.press ('q')

time.sleep(1)

if __name__ == '__main__':
main()
Алексей ГнутовУченик (92) 1 месяц назад
чтобы другой цвет нужно поменять цыфры правильно? и дополнить действия к к каждому цвету просто дописать их?
Великий ТиреГуру (3245) 1 месяц назад
Да, верно! Чтобы добавить поддержку поиска других цветов и выполнить разные действия для каждого из них, вам нужно будет изменить массивы соответствующих цветов и добавить код для выполнения необходимого действия.
Дмитрий Анисифоров Гуру (3200) 1 месяц назад
И что он делает? Прыгает на унитазе.
Рустам Абдрашитов Мыслитель (9542) 1 месяц назад
 import cv2 
import numpy as np
import pyautogui
import time

RED_COLOR = (100, 100, 100)
BRIGHT_RED_COLOR = (150, 150, 150)

def find_color(target_color):
try:
screenshot = pyautogui.screenshot()
screenshot_np = np.array(screenshot)
screenshot_np = cv2.cvtColor(screenshot_np, cv2.COLOR_RGB2BGR)

lower_bound = np.array([target_color[0] - 10, target_color[1] - 10, target_color[2] - 10])
upper_bound = np.array([target_color[0] + 10, target_color[1] + 10, target_color[2] + 10])

mask = cv2.inRange(screenshot_np, lower_bound, upper_bound)
contours, _ = cv2.findContours(mask, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)

return contours
except Exception as e:
print(f"Ошибка в функции find_color: {e}")
return []

while True:
try:
bright_red_contours = find_color(BRIGHT_RED_COLOR)

if bright_red_contours:
x, y, w, h = cv2.boundingRect(bright_red_contours[0])
pyautogui.click(x + w // 2, y + h // 2)
pyautogui.press('enter')
time.sleep(0.5)
pyautogui.press('enter')
time.sleep(2)
else:
red_contours = find_color(RED_COLOR)

if red_contours:
x, y, w, h = cv2.boundingRect(red_contours[0])
pyautogui.click(x + w // 2, y + h // 2)
pyautogui.press('q')
time.sleep(2)

except Exception as e:
print(f"Ошибка в основном цикле: {e}")
time.sleep(1)
Похожие вопросы