基於 OpenCv和Python 的手指識別及追蹤
雷鋒網按:本文為 AI 研習社編譯的技術博客,原標題 Finger Detection and Tracking using OpenCV and Python,作者為Jason Brownlee。
翻譯 | 餘杭 Lamaric 校對 | 吳曉曼 審核 | 餘杭
手指追蹤是許多計算機視覺應用的重要特徵。在該應用中,使用基於直方圖的方法將手與背景幀分離。 使用閾值處理和濾波技術來進行背景消除以獲得最佳結果。
我在手指識別時遇到的挑戰之一是將手與背景區分開並識別手指的尖端。我將向您展示我用於手指跟蹤的技術,我在此項目中使用了該技術。如果想要查看手指識別和跟蹤的實際操作,請觀看我上傳的視頻。
在要跟蹤用戶手部移動的應用程序中,膚色在要跟蹤用戶手部移動的應用程序中,膚色直方圖將非常有用。使用直方圖從圖像中剔除背景,僅留下包含膚色的圖像部分。
檢測皮膚的一種更簡單的方法是找到特定 RGB 或 HSV 範圍內的像素。如果您想了解更多有關此方法的信息,請點擊此處(https://docs.opencv.org/3.4.2/df/d9d/tutorial_py_colorspaces.html)。
上述方法的問題在於改變光線條件和膚色可能會使皮膚檢測的結果很糟糕。另一方面,直方圖往往更準確,並且直方圖能夠考慮到當前的光照條件。
在框架中繪製一個綠色的長方形並且用戶將他們的手放置在長方形中。應用程序提取用戶手掌的膚色,然後繪製成一個直方圖。
繪製長方形的過程遵循以下函數:
這個過程非常簡單——我創建了四行代碼來表示每個長方形的坐標。
hand_rect_one_x
hand_rect_one_y
hand_rect_two_x
hand_rect_two_y
這四行代碼不斷迭代以在框架內使用:cv2.rectangle 繪製生成長方形;這裡的total_rectangle表示行列的長度9。
現在用戶理解了在哪裡放置他們的手掌,接下來成功的關鍵步驟是從這些長方形中提取像素,然後基於像素生成 HSV 直方圖
函數把輸入框架轉換成 HSV 直方圖。使用 Numpy 庫生成一張圖像。圖像大小為[90*10],顏色通道數為 3。我們將其命名為 ROI (Region of Interest). 它從綠色的長方形中提取了 900 個像素值,然後將它們放入 ROI 矩陣中。cv2.calcHist 基於 ROI 矩陣給膚色創建了一個直方圖並且 cv2.normalize 使用 norm 類型對矩陣進行歸一化 cv2.NORM_MINMAX 。現在我們可以用直方圖來檢測框架中的皮膚區域。
現在用戶理解了將他們的手掌放在哪裡,下一步就是從這些長方形中提取像素然後用它們生成HSV直方圖。
......


※我們請了五位大咖,共赴 AI 醫學影像盛宴
※CEBIT 2018:聚焦數字化轉型,IBM、Intel、華為、浪潮悉數亮相
TAG:雷鋒網 |