RGB для HSV такой же, как BGR для HSV?

#python-3.x #opencv #color-space

#python-3.x #opencv #цветовое пространство

Вопрос:

Я использую OpenCV для преобразования цветового пространства. Мне было интересно, даст ли преобразование RGB в HSV и преобразование BGR в HSV одинаковый результат?

 cv2.cvtColor(np.float32(img),cv2.COLOR_BGR2HSV) # BGR to HSV
 

Поскольку, согласно моему предположению, единственное различие между RGB и BGR — это сдвиг в каналах, то при преобразовании RGB в HSV разве это не то же самое, что преобразование BGR в HSV?

Комментарии:

1. Выбрав BGR2HSV или RGB2HSV , вы сообщаете OpenCV, в каком порядке находятся каналы. Например, OpenCV самостоятельно не знает, какой канал является B каналом.

2. Моим требованием является создание изображений HSV из RGB с помощью этой строки кода cv2.cvtColor (np.float32(img),cv2.COLOR_RGB2HSV). Дает ли это мне правильную насыщенность и оттенок?

Ответ №1:

они не будут одинаковыми. BGR — это не RGB. порядок каналов меняется на противоположный.

неправильный тип преобразования даст бессмысленные значения оттенка. правильный тип преобразования даст одинаковые значения оттенка.

Насыщенность и значение будут одинаковыми в силу модели HSV, не учитывающей различную яркость основных цветов.

Комментарии:

1. спасибо, итак, BGR и RGB дадут мне два разных значения оттенка, но два других канала будут одинаковыми? Opencv учитывает порядок BGR, так же как и cv2.cvtColor(img,cv2.COLOR_RGB2HSV) дает мне преобразование RGB в HSV?

2. Я поместил его в transform.compose. Итак, изображения Intpu являются изображениями PIL.

3. Изображения PIL обычно имеют порядок RGB. преобразуйте в массив numpy, который также будет иметь порядок RGB, затем используйте cvtColor с RGB2HSV, потому что это тот порядок каналов, который у вас есть.