-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathcolor_track.py
58 lines (42 loc) · 1.77 KB
/
color_track.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
############################################################
####Program to Track/differentiate objects based on color###
####in HSV color space ###
############################################################
import cv2 # opencv library
import numpy as np #linear algebra library
def nothing(x):
pass
cap = cv2.VideoCapture(0); #Initiating camera. '0' refers to inbuilt/default camera.
#change number to switch camera
# Create trackbars
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("UH", "Tracking", 255, 255, nothing)
cv2.createTrackbar("US", "Tracking", 255, 255, nothing)
cv2.createTrackbar("UV", "Tracking", 255, 255, nothing)
while True:
#frame = cv2.imread('smarties.png')
ret, frame = cap.read() #Read Camera
hsv = cv2.cvtColor(frame, cv2.COLOR_BGR2HSV) #convert BGR to HSV
#Threshold tuning with trackbars
l_h = cv2.getTrackbarPos("LH", "Tracking")
l_s = cv2.getTrackbarPos("LS", "Tracking")
l_v = cv2.getTrackbarPos("LV", "Tracking")
u_h = cv2.getTrackbarPos("UH", "Tracking")
u_s = cv2.getTrackbarPos("US", "Tracking")
u_v = cv2.getTrackbarPos("UV", "Tracking")
l_b = np.array([l_h, l_s, l_v])
u_b = np.array([u_h, u_s, u_v])
mask = cv2.inRange(hsv, l_b, u_b) #mask output (binary)
result = cv2.bitwise_and(frame, frame, mask=mask) #Thresholded output
#Display results
cv2.imshow("frame", frame)
cv2.imshow("mask", mask)
cv2.imshow("result", result)
key = cv2.waitKey(1)
if key == 27:
break
cap.release() # Terminate camera
cv2.destroyAllWindows() #close all windows