我正在尝试将rgb图像转换为C#中的等效hsv图像。我找到了几种算法来进行转换,但在计算后无法找到如何保存图像的这些值。
例如,在计算h = 287之后,s = 0.5,v = 0.34。我应该在图像文件中将这些值保存到哪里以将其转换为等效的hsv图像?
答案 0 :(得分:2)
在一般系统中处理RGB中的图像 - 如果你要转换为HSV在HSV空间中进行一些处理,那么你想要做的是将像素转换为HSV,进行处理,将BACK转换为RGB并保存最终的RGB值。
将图像从RGB转换为HSV而不改变它会恕我直言(你最终会得到完全相同的图像)。
答案 1 :(得分:2)
访问OpenCV documentation并仔细查看 cvCvtColor 功能。在那里,您将看到OpenCV中用于存储HSV值的“技巧”。例如,要存储8位图像:V得到255 * V,S得到255 * S,H得到H / 2。
答案 2 :(得分:1)
如果您对每次需要处理图像时重用HSV值感兴趣,可以编写一个包含它们的二进制文件。然而,这涉及以某种形式重复图像,但如果您有多个需要这些值的过程并且由于图像尺寸较大,则可能会有用,以避免转换步骤。但是,一般情况下,您会读取RGB值,将它们转换为HSV,处理它们,将它们转换回RGB,然后保存处理过的图像。
如果您想将HSV值存储在图像文件中并能够将其显示为这些通道的“地图”,您可以根据将HSV值映射到RGB间隔来考虑它。 RGB值各自在0-255区间内,而在HSV中,Hue在0-360中,S和V在0.0-0.1中。这意味着您可以将S和V值存储在G和B中,方法是将它们乘以255:
G = S * 255;
B = V * 255;
对于H值,必须将其映射到0 - 255空间,因此将其乘以(255/360)并将其存储在R组件中。所以它就是最后一块:
R = H * 255 / 360;