看板 EzHotKey 關於我們 聯絡資訊
一、情境敘述: 如果將一張 " 只有黑白兩色的圖片 " 切割成長寬 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
edwin96017: 為什麼要搜黑搜白?不能跑一次只找白剩下不就是黑的? 10/13 21:47
你好~感謝你的提問~~因為要定位哪些座標的方格是什麼顏色, 所以一次搜一個點我覺得不夠快,所以邏輯改成一次搜一條線, 這條線就是方格中心點連成的線,線的起點與終點就是搜黑再搜白決定 ※ 編輯: sxskr1001 (114.36.71.248), 10/14/2015 21:05:56
logs: 不太明白你的問題,是因為500^2個點太多了嗎? 10/15 23:56
logs: 但你的方法二,似乎暗示圖形有模式?否則怎能設計方法? 10/15 23:57
logs: 不明白的是你方法二因循的邏輯或模式 10/15 23:58
logs: 雖然 500^2 個點不是很大的數目,只是對直譯式語言會很吃力 10/15 23:59
logs: 你可以試試呼叫用API,直接做影像處理,速度理論上快很多 10/15 23:59
logs: 可以現成使用的有 gdip_All.ahk 裏頭有一個 GDIP_GetPixel() 10/16 00:01
的確是因為一個一個搜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