[AHK-] PixelSearch耗费时间一问

楼主: sxskr1001 (kerker~)   2015-10-13 00:28:58
一、情境叙述:
如果将一张 " 只有黑白两色的图片 " 切割成长宽 500*500 等份,
也就是 250,000 个小方格,
已知这 250,000 方格的中心点座标,要判别这些方格内中心点的颜色是否是 Color T,
并产出 500*500 的 1,0 矩阵于 excel 中,
二、已知方法:
方法一:请问是用循环一个一个点用 pixelgetcolor or pixelsearch 搜
方法二:一次搜一列,假设黑中心点是 1,白中心点是 0,
撷取一列中心点颜色为范例如下
1 1 1 0 0 1 0 1 1
假设起 始点座标 与 终点座标 分别为 (X0,Y1) -> (X999,Y1)
由左到右用 PixelSearch 搜一条线从起点搜到终点,
假设搜到1,纪录座标 (X1,Y1) 后,
由 (X1,Y1) ~ (X999,Y1) 搜0(改搜白色),假设搜到0,纪录座标 (X2,Y1),
则我可以知道 X1 ~ X2 的方格都是1(黑色),然后记录在矩阵内,
三、尝试成果:
已经完成方法一,一分钟约可完成搜寻两千多格,因为太慢,所以想出法二,
目前法二还在构思怎么写,也不确定法二是否比较快,之所以来问而不是直接实测,
这是因为实际图形不只两个颜色,我是为了简化问题所以才先来发问,
主要问是否法二比较快,因为如果要开发法二,会有很多其他的难题,还在考虑要
不要花时间去开发...
四、问题叙述:
1. 请问单纯就搜寻颜色的速度来讲,完成整个搜寻是方法一还是方法二较快?
2. 如果将图型存在剪贴簿 clipboard 变量中,可以针对在剪贴簿的图形搜某点的
颜色吗?
3. 如果将图型存成档案,可以直接针对该档案搜某座边点的颜色吗?
(因为现在是针对萤幕上的座标搜)
4. 有没有其他方法可以加快算出这 500*500 的颜色数值矩阵?
(目前有想到的是使用 AHK_H 的多线程,不过似乎蛮难实现的,而且电脑太烂似乎
效果也不好,先排除这个选项吧)
最后,为答谢回复此问题的好心人,会依照回答比例送出 p 币 (1000 ~ 8000),
或是如果你有很好的想法,站内信讨论报酬也是可以的喔:)
作者: edwin96017 (闲(  ̄ c ̄)y▂ξ)   2015-10-13 21:47:00
为什么要搜黑搜白?不能跑一次只找白剩下不就是黑的?
作者: logs ( )   2015-10-15 23:56:00
不太明白你的问题,是因为500^2个点太多了吗?但你的方法二,似乎暗示图形有模式?否则怎能设计方法?不明白的是你方法二因循的逻辑或模式虽然 500^2 个点不是很大的数目,只是对直译式语言会很吃力你可以试试呼叫用API,直接做影像处理,速度理论上快很多可以现成使用的有 gdip_All.ahk 里头有一个 GDIP_GetPixel()

Links booklink

Contact Us: admin [ a t ] ucptt.com