1+ import cv2
2+ import numpy as np
3+
4+ # Color Detection
5+ from time import time , sleep
6+ path = 'resources/songhua-river.jpg'
7+ # Create a hue slider that helps us
8+ # find the correct colour to select
9+ def empty (a ):
10+ pass
11+ cv2 .namedWindow ('TrackBars' ) # Create the Window
12+ cv2 .resizeWindow ('TrackBars' , 640 , 240 ) # Give it a size
13+ cv2 .createTrackbar ('Hue Min' , 'TrackBars' , 0 , 179 , empty ) # Add a slider for min Hue 0-179
14+ cv2 .createTrackbar ('Hue Max' , 'TrackBars' , 179 , 179 , empty ) # Add a slider for max Hue 179
15+ cv2 .createTrackbar ('Sat Min' , 'TrackBars' , 107 , 255 , empty ) # Add a slider for min Saturation 0-255
16+ cv2 .createTrackbar ('Sat Max' , 'TrackBars' , 255 , 255 , empty ) # Add a slider for max Saturation 255
17+ cv2 .createTrackbar ('Val Min' , 'TrackBars' , 180 , 255 , empty ) # Add a slider for min Value 0-255
18+ cv2 .createTrackbar ('Val Max' , 'TrackBars' , 255 , 255 , empty ) # Add a slider for max Value 255
19+
20+ while True : # Run loop to continuously update from trackbars
21+ img = cv2 .imread (path )
22+ imgHSV = cv2 .cvtColor (img , cv2 .COLOR_BGR2HSV )
23+ h_min = cv2 .getTrackbarPos ('Hue Min' , 'TrackBars' )
24+ h_max = cv2 .getTrackbarPos ('Hue Max' , 'TrackBars' )
25+ s_min = cv2 .getTrackbarPos ('Sat Min' , 'TrackBars' )
26+ s_max = cv2 .getTrackbarPos ('Sat Max' , 'TrackBars' )
27+ v_min = cv2 .getTrackbarPos ('Val Min' , 'TrackBars' )
28+ v_max = cv2 .getTrackbarPos ('Val Max' , 'TrackBars' )
29+
30+ print (h_min , h_max , s_min , s_max , v_min , v_max )
31+
32+ lower = np .array ([h_min , s_min , v_min ])
33+ upper = np .array ([h_max , s_max , v_max ])
34+ mask = cv2 .inRange (imgHSV , lower , upper ) # Create a selection mask based on thresholds
35+ imgSelection = cv2 .bitwise_and (img , img , mask = mask ) # Apply layer mask to image
36+
37+ imgHor = np .hstack ((img , imgSelection ))
38+
39+ cv2 .imshow ('Original & Selection' , imgHor )
40+ cv2 .imshow ('Mask' , mask )
41+ cv2 .waitKey (5000 )
0 commit comments