2011-10-29 73 views
5

我想用PHP檢測照片中的某個形狀。看看我女朋友的以下照片。圖像中的PHP形狀識別

My girlfriend

這張照片有一些黑色的角落吧。我想檢測這些角落,並刪除它的內容。 (就像上面的示例圖)。

我想在不使用任何第三方庫的情況下在PHP中執行此操作。

任何想法如何做到這一點,我可以用什麼算法來檢測(基本?)形狀?

+1

你想只識別臉部或...? –

+0

您可以嘗試的是掃描圖像的每個像素,並使用黑色區域(最好是1x1像素)作爲標記,例如:掃描 - >第一個標記,即左上角 - >繼續掃描 - >下一個標記,這是右上角。從那裏你只能向下掃描這兩個座標內的圖像,直到你在左下角的最後一個標記處結束。由於你已經有了座標,你需要做一些基本的數學運算來計算圖像的比例。從那裏你可以簡單地裁剪你的假女友的形象,併爲其指定一個新的名字。 – Seralize

+0

@Alix不,它可以是任何東西。我只需要檢測標記(黑角)並獲得那些標記內部的東西。在這種情況下,這是一張臉,但它可能是任何東西的圖片。 我不能使用1px標記,因爲最終我需要從手機相機或網絡攝像頭拍攝的圖像中檢測到這一點。這就是爲什麼形狀識別很重要。 – w00

回答

5

這很容易,但它可能需要在服務器端進行密集計算。

  1. 它的模式識別和非常基本的模式。
  2. 我們還有四種不同的形狀來檢測。
  3. 考慮到固體和預定義的顏色。
  4. 考慮到形狀將具有恆定的尺寸。

可以通過

  1. 閱讀所有像素逐一實現,從左上角到圖像的右下角。
  2. 通過將預定義顏色的遇到像素分別與形狀的預定義尺寸進行比較來構造第一個(左上)和第二個(右上)形狀。
  3. 第三和第四形狀的步驟相同。
  4. 現在,如果檢測到所有四個或任意三個或任意兩個(左上角和右下角)或(右上角和左下角)形狀,我們可以裁剪所需的圖像。

我的答案我看起來很模糊,但唯一真正的答案是代碼。