python实现RGB转换HSV

版权声明:本文为博主原创文章,转载请注明出处。https://blog.csdn.net/weixin_43360384/article/details/84871521

最近在用HSV提取图片中的部分内容,所以就用到了“RGB怎么转换HSV”,开始查了很多资料,也经历了很多坑,最后终于成功了。闲话少说,直接上代码。

def rgb2hsv(r, g, b):
    r, g, b = r/255.0, g/255.0, b/255.0
    mx = max(r, g, b)
    mn = min(r, g, b)
    m = mx-mn
    if mx == mn:
        h = 0
    elif mx == r:
        if g >= b:
            h = ((g-b)/m)*60
        else:
            h = ((g-b)/m)*60 + 360
    elif mx == g:
        h = ((b-r)/m)*60 + 120
    elif mx == b:
        h = ((r-g)/m)*60 + 240
    if mx == 0:
        s = 0
    else:
        s = m/mx
    v = mx
    return h, s, v

其实前面这一部分,很多资料中都是这样,接下来要讲的是另外有的资料中没有提到的。
现在通过上面的代码,我们得到的了一个h,s,v值,这个h,s,v,值的范围分别是0-360, 0-1, 0-1,但我是在openCV中使用,H,S,V的范围是0-180,0-255,0-255,所以还要加上下面的代码:

    H = h / 2
    S = s * 255.0
    V = v * 255.0
    return H, S, V

还有一点是要清楚自己的图片是RGB还是BGR,或者其他类型!!因为如果弄错的话,H的值算出来始终是差很多。


版权声明:本文为weixin_43360384原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。