2017-03-03 42 views
0

我有一個問題。我有我的屏幕截圖,並且想要識別一個簡單的按鈕。 (我知道按鈕的樣子,以及要找的東西)。怎麼做?使用PIL?我只想座標。的Python:識別圖像的一部分,並得到協調

+0

這並不簡單。看看這個網站http://www.pyimagesearch.com/ –

+0

當你說你知道按鈕的外觀時,你知道它的外觀如何?如果你知道「這是一輪紅」,你的代碼是要好看很多不同的比,如果你知道「這是該地區的每個像素,其確切的尺寸是已知的確切的8位RGB顏色」 – Kevin

+0

要更具體的我想推一箇舊IE的保存按鈕,但我必須使它成爲不依賴於結果的東西。 –

回答

1

我覺得OpenCV的將是一個簡單的答案 - 火車上的按鈕圖像探測器,它將返回座標。我會建議一個級聯分類器,即使它可能是矯枉過正的找到一個按鈕(它通常用於面部識別),圖書館的支持是非常好的,所以它會讓你的生活變得輕鬆,而不是自制一些東西。資源的使用非常好,它也被設計成只需很少的CPU和內存即可運行。

http://opencv.org/

http://docs.opencv.org/2.4/doc/tutorials/objdetect/table_of_content_objdetect/table_of_content_objdetect.html#table-of-content-objdetect

+0

這不是一個矯枉過正的問題嗎?因爲我有一個只包含按鈕的圖像,另一個只是一個截圖。 –

+0

取決於你所要完成的任務 - 但是如果你打算在許多不同點一遍又一遍發現按鈕ITLL爲1)最簡單的代碼,因爲幾乎所有的辛勤工作在lib已完成,2 )最強大的,因爲它可以得到很多東西...光標在按鈕上? ...按鈕部分模糊...用戶有高對比度的顏色...用戶有超高或超低變焦激活...等等...分類器不會在意。 3.)由於該算法的優化程度很高,並且req的資源非常少,因此效率最高。它在一個月左右的時間裏擊敗了我可以自制的東西。 – gbtimmon

+0

您需要生成更多測試數據才能完成工作。你最終將需要很多示例來訓練,但我認爲你可以生成。 – gbtimmon

0
def find_coords_by_rgb(button_r, button_g, button_b): 

    img = Image.open('screenshot.jpg') 

    rgb_of_img = img.convert('RGB') 
    for x in range(1, /width_of_image/): 
     for y in range(1, /height_of_image/): 
     r, g, b = rgb_of_img.getpixel((x, y)) 
     if r == button_r and g == button_g and b == button_b: 
      return x, y 
+0

你認爲他的按鈕是一個像素? – gbtimmon

+0

@gbtimmon他只需要座標。這是按鈕的起始位置。 –

+0

你有什麼gui你看到哪裏有一個獨特的顏色按鈕?您是否能夠根據第一個像素的顏色唯一地查找此網頁上的後退按鈕? – gbtimmon