Изображение HSV отличается от изображения RGB

Функция cv2.cvtColor(img, cv2.COLOR_RGB2HSV) преобразует изображение RGB в изображение HSV.

Когда я сохраняю это изображение и открываю его с помощью средства просмотра изображений, почему оно визуально отличается от изображения RGB?

RGB

Изображение RGB

ВПГ

Изображение ВПГ


person Abhyudai    schedule 24.08.2016    source источник
comment
Зритель, вероятно, игнорирует тот факт, что цветовое пространство — HSV, и предполагает RGB. Затем он показывает канал H красным и т. д.   -  person Photon    schedule 24.08.2016
comment
opencv предполагает изображения bgr в imwrite и imshow и будет обрабатывать любой 3-канальный мат, как если бы это был BGR.   -  person Micka    schedule 24.08.2016
comment
@Micka Если это так, не будут ли отдельные диапазоны (g (0–255), s (0–360)) мешать или вызывать какую-либо ошибку?   -  person Abhyudai    schedule 24.08.2016
comment
в opencv канал оттенка уменьшен до 0..180 (половина оттенка), чтобы уместиться в 1 байт. насыщенность и значение 0..255 каждый   -  person Micka    schedule 24.08.2016
comment
@Micka, как это будет происходить при интерпретации значения насыщенности › 255 как g в bgr   -  person Abhyudai    schedule 24.08.2016
comment
насыщенность не может быть › 255 после преобразования из 24-битного bgr в 24-битный hsv в opencv   -  person Micka    schedule 24.08.2016
comment
взгляните на docs.opencv.org/trunk/de/d25/imgproc_color_conversions. html и docs.opencv. org/2.4/modules/highgui/doc/   -  person Micka    schedule 24.08.2016
comment
имейте в виду, что cv2.cvtColor(img, cv2.COLOR_RGB2HSV) будет неверным, если вы не конвертировали в RGB вручную, потому что обычно цветовое пространство — BGR, поэтому вы должны использовать cv2.cvtColor(img, cv2.COLOR_BGR2HSV)   -  person Micka    schedule 24.08.2016
comment
@Micka Я позаботился о BGR и RGB. Спасибо, что развеяли мои сомнения. Я должен был попытаться понять это самостоятельно.   -  person Abhyudai    schedule 24.08.2016


Ответы (1)


opencv принимает изображения BGR в imwrite и imshow и будет обрабатывать любой 3-канальный мат, как если бы это был BGR. Поэтому он обрабатывает матрицу HSV как BGR, когда мы сохраняем или показываем изображение. Теперь, что касается зрителя, наши глаза привыкли распознавать пиксели как RGB и, следовательно, интерпретировать канал H как красный, S как зеленый, а V как синий. Мика прекрасно объяснила это в комментариях.

person Abhyudai    schedule 25.08.2016