2012-02-16 50 views
0

我有23張圖片,它們都是14個像素×14個像素。找到差異 - 14×14照片

在每一個白色背景上有一個字母(255 255 255 RGB)。

我想比較它們並找到唯一的空白像素來識別該字母。

例如,在比較過程之後,我想說像素數(3寬度,2高度)爲白色的圖像14x14肯定是「A」。

可能嗎?

我有主循環檢查每一個像素,但現在我卡:

function getpixelat($img,$x,$y) { 
    $rgb = imagecolorat($img,$x,$y); 
    $r = ($rgb >> 16) & 0xFF; 
    $g = ($rgb >> 8) & 0xFF; 
    $b = $rgb & 0xFF; 
    return $r.$g.$b; 
} 

for($y=$inity; $y<$h; $y++) { 
    for($x=$initx; $x<$w; $x++) { 
     $pixel = getpixelat($img,$x,$y); 
    } 
} 
+0

我爲什麼得到-1?這不是一個有效的問題嗎? – KingBOB 2012-02-16 20:15:47

+2

否決而沒有留下意見是這樣的殘酷行爲,+ 1撤消 – tomexsans 2012-02-16 20:17:32

+1

我還沒有投票,但你的問題是,無論是甚廣,還是真的窄。從本質上講,你在問OCR,這是一個解決的問題。所以答案是肯定的,這是可能的。使用圖書館。 – 2012-02-16 20:18:11

回答

2

要找到獨特的空白像素爲一個特定的字母:

  1. 你想創建面具每封信。從一個空白麪具開始,例如所有條目設置爲零的14x14陣列。
  2. 然後,對於有問題的字母(如A),標記每個你知道像素是空白。
  3. 對於所有剩餘的字母,將其比作面膜A.如果任何其他字母都有相同的空像素,標誌着該像素爲不可用。
  4. 對所有其他字母重複該過程,即將每個字母與其他每個字母進行比較。

一旦你有一個完整的面具所有字母,每個掩碼比較每隔面具,以確保你沒有任何重複。如果你不這樣做,你可能有一些你可以參考的東西,以確定你正在處理的是哪一封信。