-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathcolor_picker.py
79 lines (64 loc) · 2.13 KB
/
color_picker.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
import cv2
import numpy as np
import argparse
args_parse = argparse.ArgumentParser()
args_parse.add_argument(
"-i",
"--image",
help="image pour test le lower / upper de la couleur",
required=True,
)
args = args_parse.parse_args()
def nothing(x):
pass
image = cv2.imread(args.image)
cv2.namedWindow("image", cv2.WINDOW_NORMAL)
cv2.createTrackbar("HMin", "image", 0, 179, nothing)
cv2.createTrackbar("SMin", "image", 0, 255, nothing)
cv2.createTrackbar("VMin", "image", 0, 255, nothing)
cv2.createTrackbar("HMax", "image", 0, 179, nothing)
cv2.createTrackbar("SMax", "image", 0, 255, nothing)
cv2.createTrackbar("VMax", "image", 0, 255, nothing)
cv2.setTrackbarPos("HMax", "image", 179)
cv2.setTrackbarPos("SMax", "image", 255)
cv2.setTrackbarPos("VMax", "image", 255)
hMin = sMin = vMin = hMax = sMax = vMax = 0
phMin = psMin = pvMin = phMax = psMax = pvMax = 0
while 1:
hMin = cv2.getTrackbarPos("HMin", "image")
sMin = cv2.getTrackbarPos("SMin", "image")
vMin = cv2.getTrackbarPos("VMin", "image")
hMax = cv2.getTrackbarPos("HMax", "image")
sMax = cv2.getTrackbarPos("SMax", "image")
vMax = cv2.getTrackbarPos("VMax", "image")
lower = np.array([hMin, sMin, vMin])
upper = np.array([hMax, sMax, vMax])
# Convert to HSV format and color threshold
hsv = cv2.cvtColor(image, cv2.COLOR_BGR2HSV)
mask = cv2.inRange(hsv, lower, upper)
result = cv2.bitwise_and(image, image, mask=mask)
if (
(phMin != hMin)
| (psMin != sMin)
| (pvMin != vMin)
| (phMax != hMax)
| (psMax != sMax)
| (pvMax != vMax)
):
print(
"(hMin = %d , sMin = %d, vMin = %d), (hMax = %d , sMax = %d, vMax = %d)"
% (hMin, sMin, vMin, hMax, sMax, vMax)
)
print(
f"add this in your script:\nlower = np.array([{hMin}, {sMin}, {vMin}])\nupper = np.array([{hMax}, {sMax}, {vMax}])"
)
phMin = hMin
psMin = sMin
pvMin = vMin
phMax = hMax
psMax = sMax
pvMax = vMax
cv2.imshow("image", result)
if cv2.waitKey(10) & 0xFF == ord("q"):
break
cv2.destroyAllWindows()