(R-50)^2 + (G-100)^2 + (B-20) ^2或者最简单的|R-50| + |G-100| + |B-20|
解决方案 »
- 2012年4月后出现COMException (0x800A03EC): 异常来自 HRESULT:0x800A03EC手工执行不出错,计划任务中出错
- 纵轴的文字倒立显示问题
- Wpf 通过触发器修改模板属性
- 利用ExecuteReader()取数,如何显示到aspx页面?
- 怎么用通过控制台输入得到的路径代替我原来设定的静态路径
- 有人可以通俗地解释一下DataRowView的用途吗?
- 求一简单的正则表达式
- 求一个SQL SERVER2000和VS2005环境下的WEB程序源码
- 请教:WinForm中调用WinRar,如何等待压缩文件生成以后,再执行压缩文件的拷贝。谢谢!
- 请大家帮帮忙,如何把XML,通过HTTP协议,发送到某个网址?
- 数组连续数
- 数据库链接过多问题,请求各位前辈!!!
上面的那种是不行的。
因为 R如果就是255-85 0 0 这个时候也是170,但是肯定不是红。 同理,255-80 5 0 这样也不行。所以,我实在找不到好的方法。老哥,你能帮我想想吗??
-----------------------------------------------------------------------------------------
我就是找不出来这个红色的 范围该怎么表达 所以我才说的。
if Col.R>=128 andalso Col.G<50 andalso Col.B<10 Then ----这个仁兄回答的是错的。因为红的范围这样表达肯定不准确,很多很多种,不是一句话的事。比如R 250-255之间的时候 G可以取值0-80 这个时候要分很多种情况了,如G在0-5的时候 B可以0-80 ,G如果再5-15 B就可以0-30……
也就是说,如果以5为一个档次的话 那么就有 R(变化范围)/5 * G(变化范围)/5* B(变化范围)/5 种可能,这样来表达一种肉眼红那你写IF要写多少句,你算过没有???这个是3个水平滚动条数组 分别改变rgb 然后填充到shape里的代码,你自己拉动滚动条看看就知道了。
肉眼红 变化范围是很多很多种的,而且每个值不同的时候,另外2个的取值范围也会跟着改变~……Private Sub HScroll1_Change(Index As Integer)
Label1(0).Caption = "R:" & 255 - HScroll1(0).Value
Label1(1).Caption = "G:" & 255 - HScroll1(1).Value
Label1(2).Caption = "B:" & 255 - HScroll1(2).Value
Shape1.FillColor = RGB(255 - HScroll1(0).Value, 255 - HScroll1(1).Value, 255 - HScroll1(2).Value)
End Sub
你这个想法挺好的啊。老兄,能帮我研究下 R定下来后G,B的逻辑关系吗? 具体见我上面的回复,我测过了。还有如果是 RGB(100,100,100) 这个颜色,怎么判断某一个颜色是否就是肉眼看上去基本就是这个颜色, 我已经研究了半个月了 ,还是没头绪。
上面的那种是不行的。
因为 R如果就是255-85 0 0 这个时候也是170,但是肯定不是红。 同理,255-80 5 0 这样也不行。所以,我实在找不到好的方法。老哥,你能帮我想想吗??
谁也没有要求你用170作为判断,你应该自己找到一个值。另外如果觉得求绝对值不科学,应该用更准确的 ^2 求平方啊。求绝对值只不过是“心算”时简单一点,肯定是为了简化做牺牲的。另外你还可以给a和b计算出一个比较合理的拟合系数,是的最终的随(255-r,g,b)三元素值得到的“距离值”是你期望的那种距离判断值。
红色(255, 0, 0)转化为(右上角, 上下边缘),则可以通过把某组RGB值转换(x, y, z),计算z到上下边缘的距离来判断是不是红色,计算(x, y)到右上角的距离来判断红色够不够“鲜艳饱满”。我觉得这可以是个思路,具体的数学计算没试过不知道。
其实就是把RGB转化成色调、饱和度和亮度,再分别判断范围,肯定比直接拿RGB的距离算要准确。转换算法搜一下肯定有的。