如何将图像从RGB模型转换为HSV(没有内置函数)并用java显示?

如何将图像从RGB模型转换为HSV(没有内置函数)并用java显示?,java,rgb,hsv,Java,Rgb,Hsv,我尝试将图像从RGB模型转换为HSV并显示它。不幸的是,我不知道怎么做。我不想使用内置函数,但我想单独编写函数。我想用类似的方式使用RGB通道来实现这一点。我从这个网站上读了很多例子,但没有找到任何特别的有用的材料。请帮助我怎么做 // image from RGB to grayscale private static BufferedImage monochromatyczny(BufferedImage obrazek) { for(int x = 0; x < obraze

我尝试将图像从RGB模型转换为HSV并显示它。不幸的是,我不知道怎么做。我不想使用内置函数,但我想单独编写函数。我想用类似的方式使用RGB通道来实现这一点。我从这个网站上读了很多例子,但没有找到任何特别的有用的材料。请帮助我怎么做

// image from RGB to grayscale
private static BufferedImage monochromatyczny(BufferedImage obrazek)
{
    for(int x = 0; x < obrazek.getWidth(); x++)
        for(int y = 0; y < obrazek.getHeight(); y++)
        {
            int piksel = obrazek.getRGB(x, y);
            // kanały r,g,b
            int r = (piksel>>16) & 0xff;
            int g = (piksel>>8)     & 0xff;
            int b = (piksel)        & 0xff;

            int gray = (r+g+b)/3;
            piksel = (gray<<16) | (gray<<8) | gray;

            obrazek.setRGB(x,y,piksel);
        }
    return obrazek;
}
//从RGB到灰度的图像
专用静态缓冲区单色图像(缓冲区图像对象)
{
对于(int x=0;x>16)和0xff;
int g=(piksel>>8)和0xff;
intb=(piksel)&0xff;
int gray=(r+g+b)/3;

piksel=(灰色很好地解释了如何转换颜色RGB->HSV


你可以在你的rgb_2_hsv函数中尝试这个公式

任何你不想使用预制函数的原因吗?我正在做一个图像处理项目,并带头禁止使用内置函数。这很奇怪,看看你是如何使用JDK中的一堆预制函数,比如
getRGB()
。但我想规则就是规则,不管它们看起来有多奇怪。我不是色彩专家,但我展示了它们用来转换的公式。你可以使用这个公式,尽管你需要编写代码。是的,可能看起来很有趣(这就是我写的内置函数),但我只能使用“加载图像”和“getRGB/setRGB”(访问RGB频道)。例如,函数:“rgb2gray”或“rgb2hsv”表示禁止引导。因此,我必须单独创建其余函数和algorytm。“该公式”-如果你有什么有用的东西请链接。只是一个评论:看看这个堆栈溢出的问题/答案。这是C++的,但是你明白了。DZI Kuje/谢谢你,我会尝试这个公式。