已经有RGB颜色值,怎么判断这个颜色是否接近黑色

C++语言 码拜 10年前 (2015-05-11) 4349次浏览 0个评论
 

可以设一个阀值,在某个范围内都算接近于黑色

关键想问一下,要怎么判断,我试过设置大于三个分量均小于100,可是也有些情况不对,有没更好的意见

20分
灰度模型 r*.299+g*.587+b*.114<某阈值,表示足够暗?
点(r,g,b)到线段(0,0,0)(1,1,1)的距离<某阈值,表示足够灰?
3分
RGB转成HSV试一下
这要看你定义黑色是什么意思.

一般来说, 是白光调暗后得到的结果.

所以如果RGB三个值相差较大, 那么它们可能是某种颜色.

只有当RGB三个值之间差值小, 并且三个值本身都小于某个值时, 才表现得像黑色.
如10,10,40  可能就表现为蓝色.  而20,20,20可能表现就很暗,像黑色

2分
可以使用(R+B+G)/3<n
2分
接近黑色还是灰色?只要r=b=g,这个颜色就是从白到黑的。小于125就可以将它视作灰色了吧,再小一点就可以当成黑色了
感谢楼上各位,那么如果要接近白色怎么判断呢?
引用 1 楼 sugar13 的回复:

灰度模型 r*.299+g*.587+b*.114<某阈值,表示足够暗?
点(r,g,b)到线段(0,0,0)(1,1,1)的距离<某阈值,表示足够灰?

这个貌似不错

3分
转成灰度, 灰度值越小表示图像越暗,反之越亮,  灰度值取值 0-255
计算方法
RGB->GrayScale的转换基本公式是这个 R = G = B = 0.3R + 0.6G + 0.1B;
还有的公式是这样   Y=0.212671*R + 0.715160*G + 0.072169*B,差不了太多;
引用 2 楼 fly_dragon_fly 的回复:

RGB转成HSV试一下

怎么转换呢

引用 9 楼 kmsch 的回复:
Quote: 引用 2 楼 fly_dragon_fly 的回复:

RGB转成HSV试一下

怎么转换呢

https://www.baidu.com/s?wd=RGB%E8%BD%AC%E6%88%90HSV&rsv_spt=1&issp=1&f=8&rsv_bp=0&rsv_idx=2&ie=utf-8&tn=baiduhome_pg&rsv_enter=1&rsv_n=2&rsv_sug3=1


CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明已经有RGB颜色值,怎么判断这个颜色是否接近黑色
喜欢 (0)
[1034331897@qq.com]
分享 (0)

文章评论已关闭!