2014-09-05 42 views
0

我想創建一個應用程序,只接收黑白瓷磚的圖像。白色的瓷磚意味着你可以移動的空間,而黑色的瓷磚將成爲你無法移動的空間(牆可能)如何閱讀圖像數據?

在這張圖片我想定義一個起點和一個目標點(也許有不同的顏色,紅色和黃色),所以我可以研究尋路問題

如何讀取圖像並處理其中的信息?

這將是sometinhg這樣的:enter image description here

在這裏我能夠在圖像中規定的牆圍,起點,終點,我想閱讀它的數據。我怎麼能在python中做到這一點?

+0

燦那麼想象會被編碼爲一個文本文件?如果您沒有閱讀和處理實際的圖像文件,那麼您可以節省很多頭痛。 – GWW 2014-09-05 03:28:59

+0

你的意思是1和0?是的..這種方式我想我知道該怎麼做。但我想用圖像。畫出我的全新迷宮並讓它自己解決,你明白了嗎? – 2014-09-05 03:31:31

+1

爲什麼不使用pygame或類似的工具「繪製」這些瓷磚,然後像這樣解決它們,你可以從所有的白色瓷磚開始,然後點擊你想成爲實心的瓷磚,然後解決 – Serial 2014-09-05 03:42:15

回答

0

您可以使用圖像模塊由PIL庫(你需要安裝),那麼這樣做:

from PIL import Image 
img = Image.open("PATH TO IMAGE", "MODE (probably 'r')") 
pixel = image.getpixel((x,y)) 

x,y是像素座標,你可以得到的顏色像素。

3

可以使用SciPy library,其中附帶了許多image processing tools

from scipy import misc 
img = misc.imread("lena.bmp") 

您可以輕鬆地訪問像素,如在第10行和第15欄:

print img[10, 15] 

輸出:

[188 101 71] 

(在這個例子中我使用從here的 「海倫」 測試圖像)


根據您可能想要將其從RGB彩色圖像轉換爲灰度圖像格式:

img = img.mean(axis = 2) 
print img[10, 15] 

輸出:

120.0 

如果您需要將uint8像素值擴展到範圍[0..1]:

img = (img/255).round() 
print img[10, 15], img[10, 6] 

輸出:

0.0 1.0 
+0

從圖像中識別形狀太難了嗎?例如:認出正方形,以便我可以讓每個人都成爲我的迷宮的瓷磚 – 2014-09-13 14:01:31

+1

@RodrigoAlves:是的。有關[模式識別]的全部研究領域(http://en.wikipedia.org/wiki/Pattern_recognition)。你可能會找到非常具體的問題的解決方案(定義良好的圖像條件,有限的形狀等),但沒有一般的形狀識別。 – Falko 2014-09-13 21:25:22