hlzxcjx 发表于 2023-10-9 18:39:03

调用大漠插件区域找色FindColor函数的用法颜色格式怎样用?

本帖最后由 hlzxcjx 于 2023-10-9 22:17 编辑

au3的找色函数PixelGetColor 效率太低,而区域找色PixelSearch经常定位不准,于是尝试用大漠插件,发现大漠插件GetColor函数与au3一样效率低,再尝试大漠插件的区域找色函数FindColor,却不懂其颜色格式"RRGGBB-DRDGDB"的用法,望各位赐教!
大漠插件:
#AutoIt3Wrapper_UseX64=n
RunWait(@ComSpec & ' /c regsvr32 /s ' & 'dm.dll', '', @SW_HIDE)
Global $DM = ObjCreate("dm.dmsoft")
If IsObj($DM) Then
      $ver = $DM.Ver()
      ConsoleWrite('当前大漠插件版本:' & $ver & @CRLF)
Else
      MsgBox(64, '提示:', '注册大漠插件失败!!!')
      Exit
EndIf

;---------------------------------------------------这个与au3同样慢!
;for $x=0 to 100
;$color = $DM.GetColor($x,600)
;MouseMove($x,600,0)
;Next
;MsgBox(0,0,$color)
;---------------------------------------------------这个与au3同样慢!

Global $intX, $intY
$var = $DM.FindColor(@DesktopWidth / 2, @DesktopHeight / 3, @DesktopWidth * 4 / 5, @DesktopHeight / 2, 0, 1.0, 1, $intX, $intY);查找区域内的黑色,黑色的颜色值为 0 ,这行代码有误!求更正!
;MouseMove($intX,$intY, 0)
MsgBox(0, 0, "x坐标:" & $intX & "y坐标:" & $intY)$var = $DM.FindColor(@DesktopWidth / 2, @DesktopHeight / 3, @DesktopWidth * 4 / 5, @DesktopHeight / 2, 0, 0.1, 1, $intX, $intY);查找区域内的黑色,黑色的颜色值为 0 ,这行代码有误!求更正!

函数简介:查找指定区域内的颜色,颜色格式"RRGGBB-DRDGDB",注意,和按键的颜色格式相反
函数原型:

long FindColor(x1, y1, x2, y2, color, sim, dir,intX,intY)
参数定义:

x1:区域的左上X坐标
y1:区域的左上Y坐标
x2:区域的右下X坐标
y2:区域的右下Y坐标
color:颜色 格式为"RRGGBB-DRDGDB",比如"123456-000000|aabbcc-202020"
sim:相似度,取值范围0.1-1.0
dir:查找方向 0: 从左到右,从上到下
             1: 从左到右,从下到上
             2: 从右到左,从上到下
             3: 从右到左,从下到上
             4:从中心往外查找
             5: 从上到下,从左到右
             6: 从上到下,从右到左
             7: 从下到上,从左到右
             8: 从下到上,从右到左
intX:返回X坐标
intY:返回Y坐标
返回值:
0:没找到
1:找到
示例:

dm_ret = dm.FindColor(0,0,2000,2000,"123456-000000|aabbcc-030303|ddeeff-202020",1.0,0,intX,intY)
If intX >= 0 and intY >= 0 Then
    MessageBox "找到"
End If

vigiles 发表于 2023-10-9 20:23:20

搜到的 b站/video/BV1ox4y1R7sX

afan 发表于 2023-10-9 21:27:06

黑色的颜色值改为字符串 '000000-000000' 试试

hlzxcjx 发表于 2023-10-9 21:55:26

afan 发表于 2023-10-9 21:27
黑色的颜色值改为字符串 '000000-000000' 试试

也不行!总是定位在(0,0)处!但设置的搜索范围不包括(0,0),难道是变量$intX, $intY参数的写法不对?

afan 发表于 2023-10-9 22:05:51

hlzxcjx 发表于 2023-10-9 21:55
也不行!总是定位在(0,0)处!但设置的搜索范围不包括(0,0),难道是变量$intX, $intY参数的写法不对 ...

@DesktopWidth / 2, @DesktopHeight / 3, @DesktopWidth * 4 / 5估计这些不行,要用整数,如Int 或 Round(@DesktopHeight / 3)

hlzxcjx 发表于 2023-10-9 22:15:02

afan 发表于 2023-10-9 22:05
@DesktopWidth / 2, @DesktopHeight / 3, @DesktopWidth * 4 / 5估计这些不行,要用整数,如Int 或 Rou ...

改为:
$var = $DM.FindColor(10, 10, 500 , 500 ,'000000-000000' , 1.0, 1, $intX, $intY)
也不行!

3131210 发表于 2023-10-11 13:02:13

au3和按键精灵测试 都是要600多毫秒


繁星 发表于 2023-10-11 17:18:48

格式对应RGB-偏色,不要用眼睛去判断,打开你的测试工具点选来生成,相似度别上来就是1.0,根据平时使用经验设在0.8左右,还有最最重要的dpi要注意
https://vip.helloimg.com/images/2023/10/11/olEOLK.png

hlzxcjx 发表于 2023-10-11 22:38:38

3131210 发表于 2023-10-11 13:02
au3和按键精灵测试 都是要600多毫秒

我的win11新系统测试约为1670毫秒!

hlzxcjx 发表于 2023-10-11 23:12:34

繁星 发表于 2023-10-11 17:18
格式对应RGB-偏色,不要用眼睛去判断,打开你的测试工具点选来生成,相似度别上来就是1.0,根据平时使用经 ...

多谢指教!

hlzxcjx 发表于 2023-10-11 23:29:49

换了au3版本,原来的代码没问题了!原来用的是autoit3_3.3.6.1,换成AutoIt v3.3.16.1后没出错了!只是AutoIt v3.3.16.1刚下载就被360查杀了!不过PixelGetColor还是慢,PixelSearch定位仍不准(偶尔不准),大漠的区域找色准确。测试PixelSearch定位不准确的是全屏幕从右往左找黑色时出现的,找其他色貌似不会,从左往右找任何色都不会。从右往左时,起点超过屏幕的3/4就定位不准。

大家可测试一下这个函数:
Sleep(3000)
$var = PixelSearch(@DesktopWidth * 4 / 5, @DesktopHeight / 3, @DesktopWidth / 5, @DesktopHeight * 2 / 3, 0)
MouseMove($var, $var, 0)
MsgBox(0, 0, "ok")

fybhwsx 发表于 2023-10-15 05:55:53

hlzxcjx 发表于 2023-10-11 23:29
换了au3版本,原来的代码没问题了!原来用的是autoit3_3.3.6.1,换成AutoIt v3.3.16.1后没出错了!只是Auto ...

把DPI缩放调到100%试试。。

hlzxcjx 发表于 2023-10-15 19:27:44

fybhwsx 发表于 2023-10-15 05:55
把DPI缩放调到100%试试。。

一样!这个应该与DPI无关!

kalafa 发表于 2023-12-6 17:45:33

大神们经验,小本本记下。
页: [1]
查看完整版本: 调用大漠插件区域找色FindColor函数的用法颜色格式怎样用?