Python CV2 обнаруживает заданные c цветные объекты и получает их координаты сцен - PullRequest
0 голосов
/ 29 марта 2020

Я работаю над первым проектом по обнаружению цвета 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)

Спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...