我試圖構建一個應用程序,它可以檢測皮膚(手,額頭,臉頰)不同部位的膚色,而不管光照條件如何。我可以用這個project來做,但它沒有照顧照明條件。這是Iphone app之一,這是否從實時相機預覽中檢測膚色android
3
A
回答
3
如果你想自己做一些圖像處理,我會建議爲圖像的每個臉部區域創建一個直方圖。只要opencv能夠檢測臉部,您應該能夠對該區域中的直方圖進行歸一化處理,並獲取歸一化版本的顏色值。
也許你想分別標準化所有通道(R,G,B)以減少彩色光線的影響。
這裏閱讀進一步的信息,柱狀圖:https://en.wikipedia.org/wiki/Histogram
當您按照這種方式,我強烈建議採取一個面作爲一個整體區域以創建直方圖(一個或多個)。
[編輯]
現在我知道你試圖做什麼,我想你可以採取以下方法:
正如你所看到的,用戶需要點按相機前部和後部。由於手機背面照亮了圖像,直方圖確實正是該應用的創建者所創建的。然而,不是來自不同的像素,而是來自使用不同照明級別的相同像素的不同樣本。
當你非常接近皮膚時,相機會向你顯示一張接近白色的圖像,也就是說,如果你喜歡,用於直方圖計算的「固定點」。
雖然我不會顯示直接代碼,我會盡量解釋的數學模型:
- 在圖像中定義了一個「重點」區域。該區域是計算直方圖時所考慮的區域。邊緣的所有其他區域都將被忽略。
- 取一些樣品(例如,3秒,每秒10個樣本= 30個樣本)
- 創建的每個樣本的直方圖和把它們相加:
- 對於每個亮度值(有他們的最大256 )計符合此值的像素數,加上所有樣品一起
- 發現,至少有一個
threshold
數值的最高值和最低值(你的「工作」,如果你喜歡的範圍),並呼籲他們histLow
和histHigh
- 重新計算每個像素s o
pixel = (pixel-histLow)/(histHigh-histLow) * 255
- 將像素值限制在0-255範圍內
- 取平均顏色值爲較窄範圍(例如,只有採樣的最高數)
如果你不知道如何繁殖或RGB添加顏色,這就是你應該有一個不同的問題開始。
相關問題
- 1. 如何從實時相機預覽中檢測平均像素強度?
- 2. Android - 相機預覽
- 3. 相機預覽Android
- 4. Android相機預覽幀時間戳
- 5. 上傳相機預覽android
- 6. Android:相機預覽旋轉
- 7. Android:相機預覽傾斜
- 8. Android - 相機預覽橫向
- 9. Android相機預覽問題
- 10. 相機預覽
- 11. Surfaceview中的Android相機預覽
- 12. Android:相機預覽中的透明WebView
- 13. 棕褐色在相機預覽視圖
- 14. 相機預覽仍然是黑色
- 15. Monodroid相機+預覽
- 16. Android相機預覽刪除綠屏?
- 17. Android自定義相機預覽位圖
- 18. Android模擬器相機預覽大小
- 19. Android - 扭曲的相機預覽
- 20. Android 2.2。人像相機預覽
- 21. Android - 相機預覽不起作用
- 22. Android上的拉伸相機預覽
- 23. 的Android如何設置相機預覽
- 24. 不顯示相機在Android上預覽
- 25. Android - 使相機預覽半透明
- 26. Android相機預覽不顯示
- 27. Android相機預覽屏幕截圖
- 28. 用相機預覽的Pi相機預覽 - 樹莓派
- 29. 在android中打開相機預覽時添加效果
- 30. OpenCV皮膚檢測顏色空間?
你能指示我一些示例代碼嗎?檢查此應用程序檢測顏色的視頻https://www.youtube.com/watch?v=dz5hLvjt9J8 –
也許您應該將此視頻鏈接添加到您的問題中,以提供有關您正在嘗試執行的操作的信息。現在我得到你想要達到的目標,這使得我的答案大多不準確。我希望相應地改變我的答案。 – Psi
當然。等待你的答覆。 –