Detecting objects of similar color in Python using OpenCV (original) (raw)

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()