started work on correcting HSV values
This commit is contained in:
@@ -8,7 +8,7 @@ import cv2
|
|||||||
|
|
||||||
from .imagereaders import VideoReader, NaoImageReader, PictureReader
|
from .imagereaders import VideoReader, NaoImageReader, PictureReader
|
||||||
from .finders import GoalFinder, BallFinder, FieldFinder
|
from .finders import GoalFinder, BallFinder, FieldFinder
|
||||||
from .utils import read_config, imresize
|
from .utils import read_config, imresize, hsv_mask
|
||||||
|
|
||||||
class Colorpicker(object):
|
class Colorpicker(object):
|
||||||
|
|
||||||
@@ -19,10 +19,12 @@ class Colorpicker(object):
|
|||||||
parameters = ['low_h', 'low_s', 'low_v', 'high_h', 'high_s', 'high_v']
|
parameters = ['low_h', 'low_s', 'low_v', 'high_h', 'high_s', 'high_v']
|
||||||
maxes = [180, 255, 255, 180, 255, 255]
|
maxes = [180, 255, 255, 180, 255, 255]
|
||||||
checkers = [
|
checkers = [
|
||||||
lambda x: min(x, self.settings['high_h'] - 1), # LOW H
|
lambda x: x, # LOW H
|
||||||
|
# lambda x: min(x, self.settings['high_h'] - 1), # LOW H
|
||||||
lambda x: min(x, self.settings['high_s'] - 1), # LOW S
|
lambda x: min(x, self.settings['high_s'] - 1), # LOW S
|
||||||
lambda x: min(x, self.settings['high_v'] - 1), # LOW V
|
lambda x: min(x, self.settings['high_v'] - 1), # LOW V
|
||||||
lambda x: max(x, self.settings['low_h'] + 1), # HIGH H
|
lambda x: x, # HIGH H
|
||||||
|
# lambda x: max(x, self.settings['low_h'] + 1), # HIGH H
|
||||||
lambda x: max(x, self.settings['low_s'] + 1), # HIGH S
|
lambda x: max(x, self.settings['low_s'] + 1), # HIGH S
|
||||||
lambda x: max(x, self.settings['low_v'] + 1), # HIGH V
|
lambda x: max(x, self.settings['low_v'] + 1), # HIGH V
|
||||||
]
|
]
|
||||||
@@ -89,7 +91,7 @@ class Colorpicker(object):
|
|||||||
frame = self.marker.draw(frame, stuff)
|
frame = self.marker.draw(frame, stuff)
|
||||||
else:
|
else:
|
||||||
hsv = cv2.cvtColor(frame, cv2.COLOR_BGR2HSV)
|
hsv = cv2.cvtColor(frame, cv2.COLOR_BGR2HSV)
|
||||||
thr = cv2.inRange(
|
thr = hsv_mask(
|
||||||
hsv,
|
hsv,
|
||||||
tuple(map(self.settings.get, ('low_h', 'low_s', 'low_v'))),
|
tuple(map(self.settings.get, ('low_h', 'low_s', 'low_v'))),
|
||||||
tuple(map(self.settings.get, ('high_h', 'high_s', 'high_v')))
|
tuple(map(self.settings.get, ('high_h', 'high_s', 'high_v')))
|
||||||
@@ -191,7 +193,7 @@ if __name__ == '__main__':
|
|||||||
parser.add_argument(
|
parser.add_argument(
|
||||||
'--target',
|
'--target',
|
||||||
help='specify for what target is being calibrated',
|
help='specify for what target is being calibrated',
|
||||||
default='field'
|
default=None
|
||||||
)
|
)
|
||||||
args = parser.parse_args()
|
args = parser.parse_args()
|
||||||
|
|
||||||
|
|||||||
@@ -17,16 +17,16 @@ print('u, i, o: increase h, s, v respectively\n',
|
|||||||
while True:
|
while True:
|
||||||
image[:] = h, s, v
|
image[:] = h, s, v
|
||||||
im2show = cv2.cvtColor(image, cv2.COLOR_HSV2BGR)
|
im2show = cv2.cvtColor(image, cv2.COLOR_HSV2BGR)
|
||||||
print('HSV:', h, s, v, ' ', end='\r')
|
print(' HSV:', h, s, v, ' ', end='\r')
|
||||||
sys.stdout.flush()
|
sys.stdout.flush()
|
||||||
cv2.imshow(window, im2show)
|
cv2.imshow(window, im2show)
|
||||||
key = cv2.waitKey(0)
|
key = cv2.waitKey(0)
|
||||||
if key == ord('q'):
|
if key == ord('q'):
|
||||||
break
|
break
|
||||||
elif key == ord('u'):
|
elif key == ord('u'):
|
||||||
h = min(h + 1, 180)
|
h = (h + 1) % 180
|
||||||
elif key == ord('j'):
|
elif key == ord('j'):
|
||||||
h = max(h - 1, 0)
|
h = (h - 1) % 180
|
||||||
elif key == ord('i'):
|
elif key == ord('i'):
|
||||||
s = min(s + 1, 255)
|
s = min(s + 1, 255)
|
||||||
elif key == ord('k'):
|
elif key == ord('k'):
|
||||||
|
|||||||
@@ -29,3 +29,14 @@ def imresize(frame, width=None, height=None):
|
|||||||
sf = 0
|
sf = 0
|
||||||
sz = (width, height)
|
sz = (width, height)
|
||||||
return cv2.resize(frame, sz, fx=sf, fy=sf)
|
return cv2.resize(frame, sz, fx=sf, fy=sf)
|
||||||
|
|
||||||
|
|
||||||
|
def hsv_mask(hsv, hsv_lower, hsv_upper):
|
||||||
|
if hsv_lower[0] > hsv_upper[0]:
|
||||||
|
mask_l = cv2.inRange(hsv, tuple(hsv_lower),
|
||||||
|
tuple([180] + hsv_upper[1:]))
|
||||||
|
mask_u = cv2.inRange(hsv, tuple([0] + hsv_lower[1:]),
|
||||||
|
tuple(hsv_upper))
|
||||||
|
return cv2.add(mask_l, mask_u)
|
||||||
|
else:
|
||||||
|
return cv2.inRange(hsv, tuple(hsv_lower), tuple(hsv_upper))
|
||||||
|
|||||||
Reference in New Issue
Block a user