[AHK-] PixelSearch耗費時間一問

看板EzHotKey作者 (kerker~)時間9年前 (2015/10/13 00:29), 9年前編輯推噓0(007)
留言7則, 2人參與, 最新討論串1/1
一、情境敘述: 如果將一張 " 只有黑白兩色的圖片 " 切割成長寬 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), 或是如果你有很好的想法,站內信討論報酬也是可以的喔:) -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 36.227.110.220 ※ 文章網址: https://www.ptt.cc/bbs/EzHotKey/M.1444667341.A.ACC.html ※ 編輯: sxskr1001 (36.227.110.220), 10/13/2015 00:31:15

10/13 21:47, , 1F
為什麼要搜黑搜白?不能跑一次只找白剩下不就是黑的?
10/13 21:47, 1F
你好~感謝你的提問~~因為要定位哪些座標的方格是什麼顏色, 所以一次搜一個點我覺得不夠快,所以邏輯改成一次搜一條線, 這條線就是方格中心點連成的線,線的起點與終點就是搜黑再搜白決定 ※ 編輯: sxskr1001 (114.36.71.248), 10/14/2015 21:05:56

10/15 23:56, , 2F
不太明白你的問題,是因為500^2個點太多了嗎?
10/15 23:56, 2F

10/15 23:57, , 3F
但你的方法二,似乎暗示圖形有模式?否則怎能設計方法?
10/15 23:57, 3F

10/15 23:58, , 4F
不明白的是你方法二因循的邏輯或模式
10/15 23:58, 4F

10/15 23:59, , 5F
雖然 500^2 個點不是很大的數目,只是對直譯式語言會很吃力
10/15 23:59, 5F

10/15 23:59, , 6F
你可以試試呼叫用API,直接做影像處理,速度理論上快很多
10/15 23:59, 6F

10/16 00:01, , 7F
可以現成使用的有 gdip_All.ahk 裏頭有一個 GDIP_GetPixel()
10/16 00:01, 7F
的確是因為一個一個搜250000個點太慢所以要想了方法二; 方法二誠如大大所言是因循一個邏輯去設計,似乎是情境敘述的不夠精確導致難懂, 我的圖是由一個個方格組成,假設每個方格內顏色一致, 然後我知道所有方格可能的顏色,我的目標是獲得是否是某一顏色的矩陣, 我一有空會測試大大所說的GDIP_GetP,希望有機會可能和你討教^^ 等等1500p附上,感謝你提供的資訊 :) 等如果事成有大幅改進再把後續禮金奉上~ ※ 編輯: sxskr1001 (111.184.14.201), 10/16/2015 22:32:26 ※ 編輯: sxskr1001 (111.184.14.201), 10/16/2015 22:35:01
文章代碼(AID): #1M6z_DhC (EzHotKey)
文章代碼(AID): #1M6z_DhC (EzHotKey)