首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何从AHK的gdip库中获取栅格格式的位图数据?

如何从AHK的gdip库中获取栅格格式的位图数据?
EN

Stack Overflow用户
提问于 2017-06-19 15:56:47
回答 1查看 1.2K关注 0票数 1

我正在做一些图像识别/运动检测,需要能够访问来自屏幕的像素数据和某种坐标,这样我就可以看到350,425的像素是什么颜色,依此类推。

我最近从屏幕的一个区域询问了a question about getting pixel data。在AHK中查看像素的默认方法非常慢(从1080p屏幕记录数据需要半天时间)。答案似乎是在AHK中使用gdip库,如下所示:

https://github.com/cswoyer/AutoHotkey/blob/master/ScreenCapture.ahk

然而,我不知道如何在处理过程中以我可以使用的格式获取像素数据。我需要访问某种结构中的数据,可以通过x,y坐标访问,或者是遵循某种基本模式的格式,这样我就可以将其重新格式化为网格数据结构并使用它。

我一直在尝试检查各种变量,寻找我可以尝试处理的任何类型的文本数据,但我尝试过的所有变量似乎都不包含文本或对象数据。

EN

回答 1

Stack Overflow用户

发布于 2017-06-19 18:20:10

我不知道你想要做什么,但是在一个变量中保存一个截图并从中获取像素应该会更快。但显然,截图需要几毫秒的时间,所以我不确定这在“运动检测”方面有多大用处。

代码语言:javascript
运行
复制
#SingleInstance, Force
SetBatchLines, -1
SetWorkingDir %A_ScriptDir%

#Include Gdip.ahk

pToken := Gdip_Startup()
pBitmap := Gdip_BitmapFromScreen() ; Make a screenshot

; Read RGB color from pixel x350 y425
ARGB := Gdip_GetPixel( pBitmap, 350, 425 )
pixelColor := ARGBtoRGB( ARGB )
MsgBox, % pixelColor

; Read RGB color from pixel x345 y567
ARGB := Gdip_GetPixel( pBitmap, 345, 567 )
pixelColor := ARGBtoRGB( ARGB )
MsgBox, % pixelColor


Gdip_DisposeImage(pBitmap)
Gdip_Shutdown(pToken)

ARGBtoRGB( ARGB ) {
 VarSetCapacity( RGB,6,0 )
 DllCall( "msvcrt.dll\sprintf", Str,RGB, Str,"%06X", UInt,ARGB<<8 )
 Return "0x" RGB
}

这两个帖子的功劳:

https://autohotkey.com/board/topic/47007-get-pixel-color-from-a-bmp/?p=293766

https://autohotkey.com/board/topic/91427-gdi-how-to-get-bitmap-from-certain-area-of-screen/?p=576860

可在此处找到Gdip.ahk:https://github.com/tariqporter/Gdip/blob/master/Gdip.ahk

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44625073

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档