2014-02-11 32 views
1

我想將下面的圖像轉換爲2D布爾數組。將點數據的圖像轉換爲2D布爾數組

enter image description here

我還沒有與之前的圖像處理程序庫的經驗,但一些粗淺的谷歌搜索給了我這似乎並不適用庫(如圖像轉換爲所需的格式,如JPEG,PNG,或者,一些常見的圖像編輯任務,如灰度,調整大小等等)。我需要某種對象識別庫來計算每個點的X和Y索引。

除了正方形的座標,我希望能夠得到行和列的計數。

+0

您的形象如何表現?它是一個文件嗎? RGB值?一些編碼字符串?分隔線是否具有恆定的寬度(可能是1 px)?黑色方塊是否總是圓整?恆定的半徑?塊是否具有恆定的寬度或高度?是平滑的還是可以將邊緣視爲純黑色/白色? –

+0

我真的不確定這裏存在什麼問題。任何簡單的圖形庫將允許您加載圖像並檢查每個像素的值([LibGD](http://libgd.bitbucket.org/)將是我的首選)。如果網格大小始終爲14像素,則只需測量圖像的寬度和高度(減去任何白色邊框),再減去1併除以14即可獲得水平和垂直單元格的數量。 –

+0

@squeamishossifrage您是否使用過該庫並得出網格大小爲14px?有沒有libgd的python端口? – deostroll

回答

0

我認爲解決這個問題的一種方法是使用erosion。您可以使用openCV庫進行此操作。創建一個邊長至少爲14px的方形內核,然後侵蝕圖像。關於侵蝕,你將會得到這樣的圖像:Eroded image

您將擁有所有正方形中心的像素位置。但是,它也會包含行。這些是在兩個或更多個方塊彼此相鄰的地方存在的。您將不得不使用算法消除它們,其中兩個像素不能位於14px的圓形半徑中。

+0

如何以編程方式查找左上角座標?它背後的邏輯是什麼? – deostroll

+0

你不需要。加載圖像時,左上角座標爲「(1,1)」。 –

+0

對於侵蝕工作左上角的網格,而不是圖像文件,應該是原點,對吧?也許在我的情況下,順便說一句(1,1) – deostroll