Я думаю, что у вас проблема из-за масштабирования данных HSV до 8 бит.Обычно, как я уверен, вы заметили, что при использовании GIMP масштаб HSV выглядит следующим образом:
H -> [0, 360]
S -> [0, 100]
V -> [0, 100]
Но OpenCV переназначает эти значения следующим образом:
(H / 2) -> [0, 180] (so that the H values can be stored in 8-bits)
S -> [0, 255]
V -> [0, 255]
Вот почему рассчитанное значение оттенка составляет 30 вместо 60. Таким образом, чтобы отфильтровать все цвета, кроме желтого, ваш вызов cvInRangeS
будет выглядеть примерно так:
cvInRangeS(imgHsv, cvScalar(25, 245, 245, 0), cvScalar(35, 255, 255, 255), imgThreshold);
Четвертый канал не используется для HSV.Этот вызов даст вам 10 значений шума в пороге вашего детектора цвета для каждого измерения.
Как уже упоминалось, SSteve ваш порог должен работать, но вам может потребоваться расширить границы вашего порога, чтобы захватить желтый цветцвет в вашем изображении.
Надеюсь, это поможет!