RGB 到 V(从 HSV)
RGB to V (from HSV)
我正在尝试将 RGB 图像转换为其值组件。我不能使用 RGB2HSV 函数,因为我被指示在没有它的情况下转换它。
如果我没记错的话,图像的值是像素中 R、G 和 B 分量的最大值;所以这就是我试图实现的。
'''
rgb_copy = self.rgb.copy()
width, height, other = rgb_copy.shape
for i in range(0, width-1):
for j in range(0, height-1):
# normalize the rgb values
[r, g, b] = self.rgb[i, j]
r_norm = r/255.0
g_norm = g/255.0
b_norm = b/255.0
# find the maximum of the three values
max_value = max(r_norm, g_norm, b_norm)
rgb_copy[i, j] = (max_value, max_value, max_value)
cv2.imshow('Value', rgb_copy)
cv2.waitKey()
'''
不幸的是,这似乎不起作用。它 returns 只是一个黑色图像,当我使用内置函数转换它时,它与值组件不同。
谁能帮忙看看我哪里做错了?
详细说明我上面的评论:
因为您试图通过除以 255 来标准化 RGB 值,所以我假设您的 RGB 图像是一个 3 通道的无符号字符图像(每个通道都是一个介于 0..255 之间的无符号字符值)。
当您克隆它时:
rgb_copy = self.rgb.copy()
您制作 rgb_copy
相同类型的图像(即 3 通道无符号字符)。
然后您尝试用每个通道的标准化 0..1 浮点值填充它。
相反,您可以简单地放置每个像素的 RGB 通道的最大值。
类似于:
rgb_copy = self.rgb.copy()
width, height, other = rgb_copy.shape
for i in range(0, width - 1):
for j in range(0, height - 1):
# find the maximum of the three values
max_value = max(self.rgb[i, j])
rgb_copy[i, j] = (max_value, max_value, max_value)
cv2.imshow('Value', rgb_copy)
cv2.waitKey()
我正在尝试将 RGB 图像转换为其值组件。我不能使用 RGB2HSV 函数,因为我被指示在没有它的情况下转换它。 如果我没记错的话,图像的值是像素中 R、G 和 B 分量的最大值;所以这就是我试图实现的。
'''
rgb_copy = self.rgb.copy()
width, height, other = rgb_copy.shape
for i in range(0, width-1):
for j in range(0, height-1):
# normalize the rgb values
[r, g, b] = self.rgb[i, j]
r_norm = r/255.0
g_norm = g/255.0
b_norm = b/255.0
# find the maximum of the three values
max_value = max(r_norm, g_norm, b_norm)
rgb_copy[i, j] = (max_value, max_value, max_value)
cv2.imshow('Value', rgb_copy)
cv2.waitKey()
'''
不幸的是,这似乎不起作用。它 returns 只是一个黑色图像,当我使用内置函数转换它时,它与值组件不同。
谁能帮忙看看我哪里做错了?
详细说明我上面的评论:
因为您试图通过除以 255 来标准化 RGB 值,所以我假设您的 RGB 图像是一个 3 通道的无符号字符图像(每个通道都是一个介于 0..255 之间的无符号字符值)。
当您克隆它时:
rgb_copy = self.rgb.copy()
您制作 rgb_copy
相同类型的图像(即 3 通道无符号字符)。
然后您尝试用每个通道的标准化 0..1 浮点值填充它。
相反,您可以简单地放置每个像素的 RGB 通道的最大值。
类似于:
rgb_copy = self.rgb.copy()
width, height, other = rgb_copy.shape
for i in range(0, width - 1):
for j in range(0, height - 1):
# find the maximum of the three values
max_value = max(self.rgb[i, j])
rgb_copy[i, j] = (max_value, max_value, max_value)
cv2.imshow('Value', rgb_copy)
cv2.waitKey()