2017-03-03 59 views

回答

3

如果你想自己做一些圖像處理,我會建議爲圖像的每個臉部區域創建一個直方圖。只要opencv能夠檢測臉部,您應該能夠對該區域中的直方圖進行歸一化處理,並獲取歸一化版本的顏色值。

也許你想分別標準化所有通道(R,G,B)以減少彩色光線的影響。

這裏閱讀進一步的信息,柱狀​​圖:https://en.wikipedia.org/wiki/Histogram

當您按照這種方式,我強烈建議採取一個面作爲一個整體區域以創建直方圖(一個或多個)。

[編輯]

現在我知道你試圖做什麼,我想你可以採取以下方法:

正如你所看到的,用戶需要點按相機前部和後部。由於手機背面照亮了圖像,直方圖確實正是該應用的創建者所創建的。然而,不是來自不同的像素,而是來自使用不同照明級別的相同像素的不同樣本。

當你非常接近皮膚時,相機會向你顯示一張接近白色的圖像,也就是說,如果你喜歡,用於直方圖計算的「固定點」。

雖然我不會顯示直接代碼,我會盡量解釋的數學模型:

  • 在圖像中定義了一個「重點」區域。該區域是計算直方圖時所考慮的區域。邊緣的所有其他區域都將被忽略。
  • 取一些樣品(例如,3秒,每秒10個樣本= 30個樣本)
  • 創建的每個樣本的直方圖和把它們相加:
    • 對於每個亮度值(有他們的最大256 )計符合此值的像素數,加上所有樣品一起
    • 發現,至少有一個threshold數值的最高值和最低值(你的「工作」,如果你喜歡的範圍),並呼籲他們histLowhistHigh
    • 重新計算每個像素s o pixel = (pixel-histLow)/(histHigh-histLow) * 255
    • 將像素值限制在0-255範圍內
    • 取平均顏色值爲較窄範圍(例如,只有採樣的最高數)

如果你不知道如何繁殖或RGB添加顏色,這就是你應該有一個不同的問題開始。

+0

你能指示我一些示例代碼嗎?檢查此應用程序檢測顏色的視頻https://www.youtube.com/watch?v=dz5hLvjt9J8 –

+0

也許您應該將此視頻鏈接添加到您的問題中,以提供有關您正在嘗試執行的操作的信息。現在我得到你想要達到的目標,這使得我的答案大多不準確。我希望相應地改變我的答案。 – Psi

+0

當然。等待你的答覆。 –