2017-02-09 2 views
0

Я использую OpenCV и Python для разработки программного обеспечения, которое может найти целевой шаблон в изображении. В настоящее время я работаю над поиском желаемых целей, и часть этого процесса запускает операцию порога HSV, чтобы изолировать цвет моей цели. Код пороговой HSV выглядит следующим образом:Что должно получиться в случае успешного завершения порога HSV в OpenCV?

out = cv2.cvtColor(input, cv2.COLOR_RGB2HSV) 
return cv2.inRange(out, (hue[0], sat[0], val[0]), (hue[1], sat[1], val[1])) 

Массивы hue[], sat[] и val[] определены в другом месте в коде, и содержат экспериментально проверенные значения для диапазона HSV я ищу. Я добавил заявление печати для вывода результата после запуска этого метода. Когда я запускаю этот метод на моих кадрах камеры, он это возвращение:

[[0 0 0 ..., 0 0 0] 
[0 0 0 ..., 0 0 0] 
[0 0 0 ..., 0 0 0]] 

Я попытался с помощью другого стокового изображения воздушных шаров, который содержит множество различных цветов, и он возвращается тем же самое. У меня возникли проблемы с поиском документации о том, как должен возвращаться метод HSV при правильной работе, поэтому я не совсем уверен, как отлаживать это.

Кто-нибудь знает, какие типы вывода я должен видеть, если все работает правильно и/или есть примеры?

+0

cv2.inRange() возвращает бинарное изображение, которое представляет собой массив пикселей, а не одно значение. Следовательно, все 0 соответствуют черным пикселам на вашем изображении после вашего порога. Попробуйте просмотреть изображения с помощью imshow. Кроме того, как бы вы определили «правильную работу»? Пожалуйста, поделитесь некоторыми изображениями, чтобы проиллюстрировать ожидаемый результат. –

+0

FYI обязательно проверьте [Показатели преобразования цвета OpenCV] (http://docs.opencv.org/2.4/modules/imgproc/doc/miscellaneous_transformations.html#cvtcolor), очень важно, когда порог вручную! –

+0

Пожалуйста, укажите out.dtype, нижний и верхний пределы для оттенков, сит и val. –

ответ

0

Я решил это, и я хотел поставить это здесь, в случае, если у кого-то есть аналогичный вопрос и он будет его искать позже.

Печать изображения в окно очень помогла мне, потому что мой веб-просмотрщик для IP-камеры, окна отображения GRIP и изображения OpenCV были немного разными, поэтому числа пороговых значений, которые я получил от GRIP, не работали вообще, и вернул только черное изображение.

Вот как напечатать изображение в окно и посмотреть, что вы работаете с:

cv2.imshow('image', img) #img is your image, 'image' is the name of the window you'll create 
cv2.waitKey(0) #handles GUI elements, and causes the window to close when you press any key 
cv2.destroyAllWindows() 
Смежные вопросы