首页 > 解决方案 > opencv与skimage之间的HSV色彩空间转换

问题描述

我在比较 skImage HSV 颜色空间和 OpenCV hsv 颜色空间转换方法之间的差异,我发现了以下我不明白的差异:

from PIL import Image
from skimage import io
import numpy as np
import cv2

image = PIL.Image.open("112.jpg")
data = np.asarray(image)                      #Feeding the same  RGB array
y1=cv2.cvtColor(np.float32(data),cv2.COLOR_RGB2HSV)
y1 = y1.astype(np.uint8)
y2= color.rgb2hsv(data)                       #skimage conversion

我使用 PIL 来确保输入 RGB 阵列。在这里,当我打印图像时,我得到了以下输出。

y1

>>> array([[[ 52,   0, 252],
    [ 52,   0, 252],
    [ 52,   0, 252],
    ...,
    [ 59,   0, 186],
    [ 59,   0, 186],
    [ 59,   0, 186]],

   [[ 52,   0, 252],
    [ 52,   0, 252],
    [ 52,   0, 252],
    ...,
    [ 59,   0, 186],
    [ 59,   0, 186],
    [ 59,   0, 186]],

   [[ 52,   0, 252],
    [ 52,   0, 252],
    [ 52,   0, 252],
    ...,
    [ 59,   0, 187],
    [ 59,   0, 187],
    [ 59,   0, 187]],

   ...,


y2

>>> array([[[0.14465409, 0.21031746, 0.98823529],
    [0.14465409, 0.21031746, 0.98823529],
    [0.14465409, 0.21031746, 0.98823529],
    ...,
    [0.16515152, 0.59139785, 0.72941176],
    [0.16515152, 0.59139785, 0.72941176],
    [0.16515152, 0.59139785, 0.72941176]],

   [[0.14465409, 0.21031746, 0.98823529],
    [0.14465409, 0.21031746, 0.98823529],
    [0.14465409, 0.21031746, 0.98823529],
    ...,
    [0.16515152, 0.59139785, 0.72941176],
    [0.16515152, 0.59139785, 0.72941176],
    [0.16515152, 0.59139785, 0.72941176]],

   [[0.14465409, 0.21031746, 0.98823529],
    [0.14465409, 0.21031746, 0.98823529],
    [0.14465409, 0.21031746, 0.98823529],
    ...,
    [0.16515152, 0.58823529, 0.73333333],
    [0.16515152, 0.58823529, 0.73333333],
    [0.16515152, 0.58823529, 0.73333333]],

   ...,
  1. 为什么我的 y1 和 y2 数组不同?skimage 和 opencv 对于相同的色彩空间是否遵循不同的转换公式?

  2. 将 RGB 图像转换为 HSV 图像的标准和最常用的方法是:“cvtColor(....RGB2HSV) -cv2”或“rgbtohsv() -skimage”?

先感谢您 :)

标签: python-3.xopencvhsvcolor-space

解决方案


推荐阅读