Я работаю над первым проектом по обнаружению цвета CV2 и мне нужна помощь, чтобы продолжить. До сих пор я делал захват изображения и фильтровал его для определенного цвета c (см. Код и рисунок ниже):
import numpy as np
from PIL import ImageGrab
import cv2
def rec_picture():
raw_pic = np.array(ImageGrab.grab(bbox=(10, 70, 1330, 609)))
colored_pic = cv2.cvtColor(raw_pic, cv2.COLOR_BGR2RGB)
return colored_pic
def filter_for_color(picture, color):
if color == 'red':
l_h = 116
l_s = 158
l_v = 51
u_h = 179
u_s = 192
u_v = 255
elif color == 'yellow':
l_h = 88
l_s = 56
l_v = 139
u_h = 119
u_s = 255
u_v = 255
hsv = cv2.cvtColor(picture, cv2.COLOR_RGB2HSV)
lower_color = np.array([l_h, l_s, l_v])
upper_color = np.array([u_h, u_s, u_v])
mask = cv2.inRange(hsv, lower_color, upper_color)
res = cv2.bitwise_and(picture, picture, mask=mask)
return res
def main():
while(True):
screen = filter_for_color(rec_picture(), 'yellow')
cv2.imshow('window', screen)
if cv2.waitKey(25) & 0xFF == ord('q'):
cv2.destroyAllWindows()
break
if __name__ == '__main__':
main()
Результаты кода выше:
Результаты после процесса фильтрации.
В качестве следующего шага я хочу python распознать эти продолговатые желтые части на изображении как «объекты» и получить экранные координаты центр каждого зеленого прямоугольника (чтобы управлять мышью позже):
Сделанный из клыка эскиз того, что я хочу сделать
В результате я подумал о чем-то как:
screen_coordinates_obj1 = get_obj_coordinates (obj1)
Спасибо!