forked from abhi3315/opencv
-
Notifications
You must be signed in to change notification settings - Fork 0
/
11. color detection video.py
80 lines (68 loc) · 2.88 KB
/
11. color detection video.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
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
import cv2
import numpy as np
def empty(a):
pass
cap = cv2.VideoCapture(0)
def stackImages(imgArray, scale=1):
rows = len(imgArray)
cols = len(imgArray[0])
rowsAvailable = isinstance(imgArray[0], list)
width = imgArray[0][0].shape[1]
height = imgArray[0][0].shape[0]
if rowsAvailable:
for x in range(0, rows):
for y in range(0, cols):
if imgArray[x][y].shape[:2] == imgArray[0][0].shape[:2]:
imgArray[x][y] = cv2.resize(
imgArray[x][y], (0, 0), None, scale, scale)
else:
imgArray[x][y] = cv2.resize(
imgArray[x][y], (imgArray[0][0].shape[1], imgArray[0][0].shape[0]), None, scale, scale)
if len(imgArray[x][y].shape) == 2:
imgArray[x][y] = cv2.cvtColor(
imgArray[x][y], cv2.COLOR_GRAY2BGR)
imageBlank = np.zeros((height, width, 3), np.uint8)
hor = [imageBlank]*rows
hor_con = [imageBlank]*rows
for x in range(0, rows):
hor[x] = np.hstack(imgArray[x])
ver = np.vstack(hor)
else:
for x in range(0, rows):
if imgArray[x].shape[:2] == imgArray[0].shape[:2]:
imgArray[x] = cv2.resize(
imgArray[x], (0, 0), None, scale, scale)
else:
imgArray[x] = cv2.resize(
imgArray[x], (imgArray[0].shape[1], imgArray[0].shape[0]), None, scale, scale)
if len(imgArray[x].shape) == 2:
imgArray[x] = cv2.cvtColor(imgArray[x], cv2.COLOR_GRAY2BGR)
hor = np.hstack(imgArray)
ver = hor
return ver
cv2.namedWindow('Trackbars')
cv2.resizeWindow('Trackbars', 640, 240)
cv2.createTrackbar('Hue Min', "Trackbars", 0, 179, empty)
cv2.createTrackbar('Hue Max', "Trackbars", 179, 179, empty)
cv2.createTrackbar('Sat Min', "Trackbars", 0, 255, empty)
cv2.createTrackbar('Sat Max', "Trackbars", 255, 255, empty)
cv2.createTrackbar('Val Min', "Trackbars", 0, 255, empty)
cv2.createTrackbar('Val Max', "Trackbars", 255, 255, empty)
while True:
sucess, img = cap.read()
imgHsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)
h_min = cv2.getTrackbarPos('Hue Min', 'Trackbars')
h_max = cv2.getTrackbarPos('Hue Max', 'Trackbars')
s_min = cv2.getTrackbarPos('Sat Min', 'Trackbars')
s_max = cv2.getTrackbarPos('Sat Max', 'Trackbars')
v_min = cv2.getTrackbarPos('Val Min', 'Trackbars')
v_max = cv2.getTrackbarPos('Val Max', 'Trackbars')
print(h_min, h_max, s_min, s_max, v_min, v_max)
lower = np.array([h_min, s_min, v_min])
upper = np.array([h_max, s_max, v_max])
mask = cv2.inRange(imgHsv, lower, upper)
imgResult = cv2.bitwise_and(img, img, mask=mask)
stack = stackImages([[img, imgHsv], [mask, imgResult]], 0.5)
cv2.imshow('Output', stack)
if cv2.waitKey(1) == ord('q'):
break