版权声明:本文为博主原创文章,转载请注明出处。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版权协议,转载请附上原文出处链接和本声明。