溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

OpenCV手部關鍵點檢測的示例代碼怎么寫

發(fā)布時間:2021-12-15 18:14:35 來源:億速云 閱讀:145 作者:柒染 欄目:大數(shù)據(jù)

OpenCV手部關鍵點檢測的示例代碼怎么寫,針對這個問題,這篇文章詳細介紹了相對應的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。

算法思想
該文中作者使用的算法模型是CMU Perceptual Computing Lab開源的集合人體、人臉、手部關鍵點檢測的開源庫OpenPose,其中手部關鍵點檢測(Hand Keypoint detector)算法來自CVPR2017的論文《Hand Keypoint Detection in Single Images using Multiview Bootstrapping》。
人手在3D空間由于視角不同、靈活的精細動作等原因,較難得到精確標注的數(shù)據(jù)集。在該論文中,作者提出了一種稱之為Multiview Bootstrapping的手部關鍵點檢測迭代改進算法,實現(xiàn)了具有較高精度的檢測算法。     OpenCV手部關鍵點檢測的示例代碼怎么寫
如上圖所示,作者提出首先使用少量標注的含有人手關鍵點的數(shù)據(jù)集訓練Convolutional Pose Machines神經(jīng)網(wǎng)絡,使用31個不同視角的高清攝像頭拍攝人手,用上述檢測模型初步檢測關鍵點,將這些關鍵點根據(jù)攝像機的位姿構建三角(triangulation),得到關鍵點的3D位置,再將計算得到的3D點位置重投影到每一幅不同視角的2D圖像,再使用這些2D圖像和關鍵點標注訓練檢測模型網(wǎng)絡,經(jīng)過幾次迭代,即可以得到較為精確的手部關鍵點檢測模型。
原論文中提出的模型可生成22個關鍵點,其中21個點是人手部的,第22個點代表著背景。下圖展示了人手部的21個關鍵點位置。
OpenCV手部關鍵點檢測的示例代碼怎么寫

OpenCV手部關鍵點檢測主要流程
1)下載模型
運行開源工程中的getModels.sh下載模型,
OpenCV手部關鍵點檢測的示例代碼怎么寫或者直接在網(wǎng)址:
http://posefs1.perception.cs.cmu.edu/OpenPose/models/hand/pose_iter_102000.caffemodel
下載。將模型放到“hand/”文件夾下。
2)加載模型和圖像
使用OpenCV DNN函數(shù)readNetFromCaffe函數(shù)加載模型權重。
OpenCV手部關鍵點檢測的示例代碼怎么寫3)推斷預測
blobFromImage將圖像轉(zhuǎn)為blob,forward函數(shù)實現(xiàn)網(wǎng)絡推斷。
OpenCV手部關鍵點檢測的示例代碼怎么寫4)獲取關鍵點精確位置并顯示

OpenCV手部關鍵點檢測的示例代碼怎么寫

OpenCV手部關鍵點檢測的示例代碼怎么寫

上述網(wǎng)絡計算的結果是22個矩陣,每個矩陣代表某個特定關鍵點最可能出現(xiàn)在圖像中哪個位置的熱圖,需要調(diào)用minmaxLoc函數(shù)找到精確位置,進而將其畫出并標注序號。
OpenCV手部關鍵點檢測的示例代碼怎么寫

OpenCV手部關鍵點檢測的示例代碼怎么寫

OpenCV手部關鍵點檢測的示例代碼怎么寫

5)畫出骨架
OpenCV手部關鍵點檢測的示例代碼怎么寫

OpenCV手部關鍵點檢測的示例代碼怎么寫

OpenCV手部關鍵點檢測的示例代碼怎么寫

關于OpenCV手部關鍵點檢測的示例代碼怎么寫問題的解答就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關注億速云行業(yè)資訊頻道了解更多相關知識。

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權內(nèi)容。

AI