OpenCV  é uma biblioteca de funções de programação voltada principalmente para a visão computacional em tempo real.

Neste artigo, vamos ver como obter os objetos da mesma cor em uma imagem. Podemos selecionar uma cor por barra deslizante que é criada pelo comando cv2 cv2.createTrackbar.

Bibliotecas necessárias:

OpenCV 
Numpy

Abordagem:

Em primeiro lugar , precisamos ler a imagem que está em nossa pasta local usando cv2.imread(). Para filtrar um específica cor precisamos imagem convertido ao em HSV formato que é matiz, saturação , e valor e mascarar a imagem usando cv2.inRange(), fornecendo limites inferior e superior de RGB valores que queríamos para filtrar o que nos dá um preto e imagem branca onde as imagens com a cor do nosso interesse são a branco e as restantes a preto. podemos obter de volta as imagens com a cor especificada que demos pela barra de controle executando a operação cv2 bitwise_and .

Código:

import cv2 
import numpy as np 
import matplotlib.pyplot as plt 
  
cap = cv2.VideoCapture(0) 
def nothing(x): 
    pass
cv2.namedWindow('Tracking') 
  
cv2.createTrackbar("LH", "Tracking", 
                   0, 255, nothing) 
cv2.createTrackbar("LS", "Tracking"
                   0, 255, nothing) 
cv2.createTrackbar("LV", "Tracking"
                   0, 255, nothing) 
cv2.createTrackbar("HH", "Tracking"
                   0, 255, nothing) 
cv2.createTrackbar("HS", "Tracking"
                   0, 255, nothing) 
cv2.createTrackbar("HV", "Tracking", 
                   0, 255, nothing) 
while True: 
    
    
    _, frame = cap.read() 
      
    
    hsv = cv2.cvtColor(frame,  
                       cv2.COLOR_BGR2HSV) 
      
    
    l_h = cv2.getTrackbarPos("LH", 
                             "Tracking") 
    
    l_s = cv2.getTrackbarPos("LS", 
                             "Tracking") 
    
    l_v = cv2.getTrackbarPos("LV"
                             "Tracking") 
    
    h_h = cv2.getTrackbarPos("HH"
                             "Tracking") 
    
    h_s = cv2.getTrackbarPos("HS", 
                             "Tracking") 
    
    h_v = cv2.getTrackbarPos("HV", 
                             "Tracking") 
    
    l_b = np.array([l_h, l_s, 
                    l_v]) 
    
    u_b = np.array([h_h, h_s, 
                    h_v]) 
    
    mask = cv2.inRange(hsv, l_b, 
                       u_b) 
    
    res = cv2.bitwise_and(frame,  
                          frame, mask = mask) 
      
    
    
    cv2.imshow('frame', frame) 
    cv2.imshow('mask', mask) 
    cv2.imshow('res', res) 
      
    
    k =  cv2.waitKey(1) 
      
    
    
    if k == 27: 
        break
          
cap.release() 
cv2.destroyAllWindows() 

Resultado:

detectar objetos da mesma cor