- 版主
- 23805
- 4121
- 37
- 514 朵
- 2040 个
- 1206 个
- 138500
- 2004-08-11
|
1#
t
T
发表于 2016-04-16 11:22
|
|只看楼主
【图灵识别系列】颜色知识『Fish ISR虹鱼图灵识别』- 免费识别插件下载【图灵识别系列】识别基础-识别有史以来最简单的验证码 http://bbs.anjian.com/showtopic-606271-1.aspx【图灵识别系列】图片知识-根据图片进行识别 http://bbs.anjian.com/showtopic-621909-1.aspx 【学习咨询:加群314452472/866837563】根据颜色进行识别- 您所在的用户组无法下载或查看附件
1、颜色基础知识 阳光赋予我们的世界有七种颜色,他们分别是,红橙黄绿青蓝紫,使用三棱透镜进行折射就能看到七色彩虹。 - 您所在的用户组无法下载或查看附件
光从物体反 射到人的眼睛所引起的一种视觉心理感受。色彩按字面含义上理解可分为色和彩,所谓色是指人对进入眼睛的光并传至大脑时所产生的感觉;彩则指多色的意思,是人对光变化的理解。 自然界的色彩是十分复杂的。我们必须学会用种类有限的颜料调成丰富多样的色彩,为此,我们要了解颜料混合的规律。 绘画色彩中最基本的颜色为三种即红、黄、蓝,称之为原 色。这三种原 色颜色纯 正、鲜明、强烈,而且这三种原色本身是调不出的,但是它们可以调 配出多种色相的色彩。 - 您所在的用户组无法下载或查看附件
1.1、颜色格式 颜色值的格式有很多种,常见的有RGB,HSL,CMYK等。本文中主要用到RGB和HSL格式的颜色值。 什么是RGB?RGB颜色空间模型: RGB颜色空间采用物理三基色表示:红、绿、蓝。 任何一个颜色都是有三基 色混合而成的。但是,人的视觉不适应这种颜色体制。 - 您所在的用户组无法下载或查看附件
- 您所在的用户组无法下载或查看附件
什么是HSL?HSL颜色空间模型: 人的肉 眼看颜色,不可能像机器一样,分析出颜色里含 有多少比重的 红、绿、蓝 肉 眼看颜色,是通过由色 相(Hue,简H),饱和度(Saturation,简S)和色明度(Value,简L)来识别我们看到的是什么颜色。 HSL就是用色 相,饱和度和色明度来形容颜色,所以它适合人的视觉。这个色彩缤纷的圆锥形就是HSL的色彩空间。 - 您所在的用户组无法下载或查看附件
1.2、颜 色类 型转 换 什么情 况下需要颜 色转 换?有时 候会出现 颜 色随 着时间的变化而变 亮或者变 暗,一般 配 套的方法在这 种情况下查找颜 色就会找不到,那怎么办呢? 我们可以利用颜色的----色相值 来判断。 什么 是 色 相? 比如 红 色,它在白 天 时是 红 色,到了晚 上 时还是一样 是 红 色,它不会因为白天变 亮或者晚 上变 暗而改变 本 色的。(如下图) - 您所在的用户组无法下载或查看附件
【RGB转HSL】按键脚本: - //色调(H)、饱 和度(S)、亮度(L)
- //下面这句是把16进制颜色("0000FF")转换分解到10进制(H:H, S:S, L:L)分量中
- Call Plugin.Color.ColorToHSL("0000FF", H, S, L)
- MsgBox H & " " & S & " " & L
复制代码 2、根据颜色进行识别 你有没有这样的怀疑过,取色判断跟图像识别应该没有任何关系吧? 其实,大家在日常生活中都是有体 验过的,对吧?没有吗? - 您所在的用户组无法下载或查看附件
平常生活中最常见的就是“红绿灯”啦(如上图),看到红 灯就会停车,对吧?你们看到的这些根据人眼判断的就是一种识别,只是你们没有意识到而已,是不是?这个就是根据一种颜色来判断,一种最简单的识别方法。 但也有的时候我们无法单纯的只靠一种颜色来识别,因为这样会很容易识别错误,比如:红色的就一定是红 灯吗?此时就需要大范围内的多种颜色一起进行判断。 那么我们可以说,颜色判断就是一种最最基础的图像识别方法。
| 下面举个例子:如何利用颜色找到电脑桌面上的“我的电脑”图标?(如下图) - 您所在的用户组无法下载或查看附件
首先,打开鱼鱼抓色工具,勾选或按热键【Alt+~】启动取色功能(如下图), - 您所在的用户组无法下载或查看附件
然后把鼠标移动到“我的电脑”图标的淡绿 色点上(任意颜 色点都可以)(如下图), - 您所在的用户组无法下载或查看附件
最后按下热键【Alt+~】停止取色(如下图)。 - 您所在的用户组无法下载或查看附件
这样,就完成了“我的电脑”图标颜色的获取(如下图)。 - 您所在的用户组无法下载或查看附件
下面,我们来使用16进制的“6CF999”这个颜 色在屏幕(0, 0, 1024, 768)区域内进行查找: 【按键精灵脚本】:新建一个脚本,切换到源文件视图,脚本如下: - Dim FoundX, FoundY
- FindColor 0, 0, 1024, 768, "6CF999", FoundX, FoundY
- If FoundX > 0 And intY > 0 Then
- MessageBox "找到了“我的电脑”图标"
- End If
复制代码 【VB代码】:新建一个标准EXE工程,放一个按钮控件名称为“找色”,代码如下: - Private Sub 找色_Click()
- Dim FoundX As Long, FoundY As Long
- Call 屏幕区域找色(0, 0, 1024, 768, "6CF999", 0, 0.9, FoundX, FoundY)
- MsgBox "找到了“我的电脑”图标"
- End Sub
复制代码 封装函数:- Public Sub 屏幕区域找色(左 As Long, 上 As Long, 右 As Long, 下 As Long, 颜色值 As String, 查找方向 As Integer, 相似度 As Single, FoundX As Long, FoundY As Long)
- Dim ColVal() As Byte, bi24BitInfo As BitMapInfo
- Dim InPutHei As Long, InPutWid As Long
- Dim iBitmap As Long, IdSource As Long
- Dim i As Long, i2 As Long, i3 As Long
- Dim w As Long, wwww As Integer, H As Long, hhhh As Integer
- Dim 三维图像数组() As Byte
- FoundX = -1
- FoundY = -1
- On Error GoTo ErrLine
- '1.截取屏幕图片信息
- Call 获取屏幕像素(左, 上, 右, 下, 三维图像数组)
- '2.查找判断
- Dim Similar As Long
- Similar = 50 - (50 * 相似度) '相似度计算
- Dim Bbx As Long, Bby As Long, 宽 As Long, 高 As Long
- 宽 = 右 - 左 - 1
- 高 = 下 - 上 - 1
- If 查找方向 = 0 Then '从左到右.从上到下 顺序
- For Bby = 0 To 高
- For Bbx = 0 To 宽
- If 相似度判断(三维图像数组(0, Bbx, Bby), 三维图像数组(1, Bbx, Bby), 三维图像数组(2, Bbx, Bby), 颜色值, Similar) = True Then
- FoundX = Bbx + 左
- FoundY = Bby + 上
- GoTo ErrLine
- End If
- Next
- Next
- ElseIf 查找方向 = 1 Then '从左到右.从下到上 顺序
- For Bby = 高 To 0 Step -1
- For Bbx = 0 To 宽
- If 相似度判断(三维图像数组(Bbx, Bby), 三维图像数组(1, Bbx, Bby), 三维图像数组(2, Bbx, Bby), 颜色值, Similar) = True Then
- FoundX = Bbx + 左
- FoundY = Bby + 上
- GoTo ErrLine
- End If
- Next
- Next
- ElseIf 查找方向 = 2 Then '从右到左 从上到下.顺序
- For Bby = 0 To 高
- For Bbx = 宽 To 0 Step -1
- If 相似度判断(三维图像数组(Bbx, Bby), 三维图像数组(1, Bbx, Bby), 三维图像数组(2, Bbx, Bby), 颜色值, Similar) = True Then
- FoundX = Bbx + 左
- FoundY = Bby + 上
- GoTo ErrLine
- End If
- Next
- Next
- ElseIf 查找方向 = 3 Then '从右到左 从下到上.顺序
- For Bby = 高 To 0 Step -1
- For Bbx = 宽 To 0 Step -1
- If 相似度判断(三维图像数组(Bbx, Bby), 三维图像数组(1, Bbx, Bby), 三维图像数组(2, Bbx, Bby), 颜色值, Similar) = True Then
- FoundX = Bbx + 左
- FoundY = Bby + 上
- GoTo ErrLine
- End If
- Next
- Next
- ElseIf 查找方向 = 4 Then '从上到下 从左到右.顺序
- For Bbx = 0 To 宽
- For Bby = 0 To 高
- If 相似度判断(三维图像数组(Bbx, Bby), 三维图像数组(1, Bbx, Bby), 三维图像数组(2, Bbx, Bby), 颜色值, Similar) = True Then
- FoundX = Bbx + 左
- FoundY = Bby + 上
- GoTo ErrLine
- End If
- Next
- Next
- ElseIf 查找方向 = 5 Then '从上到下 从右到左.顺序
- For Bbx = 宽 To 0 Step -1
- For Bby = 0 To 高
- If 相似度判断(三维图像数组(Bbx, Bby), 三维图像数组(1, Bbx, Bby), 三维图像数组(2, Bbx, Bby), 颜色值, Similar) = True Then
- FoundX = Bbx + 左
- FoundY = Bby + 上
- GoTo ErrLine
- End If
- Next
- Next
- ElseIf 查找方向 = 6 Then '从下到上 从左到右.顺序
- For Bbx = 0 To 宽
- For Bby = 高 To 0 Step -1
- If 相似度判断(三维图像数组(Bbx, Bby), 三维图像数组(1, Bbx, Bby), 三维图像数组(2, Bbx, Bby), 颜色值, Similar) = True Then
- FoundX = Bbx + 左
- FoundY = Bby + 上
- GoTo ErrLine
- End If
- Next
- Next
- ElseIf 查找方向 = 7 Then '从下到上 从右到左.顺序
- For Bbx = 宽 To 0 Step -1
- For Bby = 高 To 0 Step -1
- If 相似度判断(三维图像数组(Bbx, Bby), 三维图像数组(1, Bbx, Bby), 三维图像数组(2, Bbx, Bby), 颜色值, Similar) = True Then
- FoundX = Bbx + 左
- FoundY = Bby + 上
- GoTo ErrLine
- End If
- Next
- Next
- End If
- ErrLine:
- Erase 三维图像数组 '释放内存
- End Sub
复制代码 注意:这里调用到的“获取屏幕像素()”函数,将在后面篇章中还会介绍。【图灵识别系列】识别基础-识别有史以来最简单的验证码 http://bbs.anjian.com/showtopic-606271-1.aspx【图灵识别系列】图片知识-根据图片进行识别 http://bbs.anjian.com/showtopic-621909-1.aspx
投票:【图灵识别系列】颜色知识-根据颜色进行识别
- 截止时间:2016-05-31
1. 好评
|
|
4票 / 100.00%
|
2. 差评
|
|
0票 / 0.00%
|
抱歉,您所在的用户组没有参与投票的权限,请注册或登录!
|
|