Europe/Istanbul
All Projects

HSV Color Selector — Instant HSV Masks for OpenCV

A tiny tool to dial in HSV ranges, preview masks live, and export presets. Used in VEGA for target detection.
August 8, 2025
Python
OpenCV
GUI
Image Processing
Picking HSV thresholds by trial-and-error is slow and brittle. This tool lets me preview masks live, then save exact ranges I can drop into any OpenCV pipeline — which is how we tuned target segmentation for VEGA.
  • Live preview of frame / mask / masked frame.
  • Linked sliders for Hlow/Hhigh, Slow/Shigh, Vlow/Vhigh.
  • Save & load presets (.json / .yaml) for different lighting.
  • Batch-test presets on image folders to check robustness.
  • OpenCV trackbars for a zero-dep GUI; optional PyQt view.
  • Morphology (open/close) & blur toggles to fight speckle noise.
  • Export helper returns ready-to-use np.array bounds.
import cv2 as cv, numpy as np, json

preset = json.load(open("presets/target-indoor.json"))
lower = np.array(preset["lower"])   # e.g. [20, 80, 90]
upper = np.array(preset["upper"])   # e.g. [35, 255, 255]

frame = cv.imread("sample.jpg")
hsv = cv.cvtColor(frame, cv.COLOR_BGR2HSV)
mask = cv.inRange(hsv, lower, upper)
mask = cv.morphologyEx(mask, cv.MORPH_OPEN, np.ones((3,3), np.uint8))

cv.imshow("mask", mask); cv.waitKey(0)
Skills demonstrated: practical CV tooling, robust masking, config/preset design, quick feedback loops for field work.