【OpenPose-Windows】運行OpenposeDemo.exe 如何儲存映像運行結果及關節點資訊

來源:互聯網
上載者:User

標籤:如何   注意   targe   tar   ubuntu   dash   and   直接   官方文檔   

跑過很多次openposeDemo了,不管是video、Webcam還是Images,都是運行結果一閃而過,然而我們所要的肯定不是只看一下運行結果就完事的,很多情況下,我們都希望能夠把運行結果的映像、關節點座標資訊、人數統計等資料資訊全部儲存下來,以便於我們對openpose進行更加深入的分析和應用,那麼這篇部落格的作用就是告訴大家如何把這些運行結果儲存下來。 
openposeDemo的程式運行結果的儲存,其實有兩種方式,一種便是直接使用官方Github的openpose demo的1.0.1的發布版本的命令列操作,另一種就是修改openposeDemo的原始碼的方式,使得編譯發布版本的程式直接可以儲存運行結果。下面,筆者就兩種方式做詳細介紹。

一、命令列模式

根據官方Github quick-start文檔,Windows上運行openposeDemo 1.0.1版本的程式如下, 


根據以上命令,如果需要儲存運行圖片結果,亦或是儲存關節點(特徵點)的座標資訊,亦或是儲存人數統計的資訊內容,可運行如下命令 
【PS】下述命令僅提供Images的命令,其他Video和Webcam的儲存方式與Images的一致。

在examples/檔案夾下建立與media檔案夾並列的檔案夾media_out,然後運行如下程式

儲存映像
bin/OpenPose.exe --image_dir examples/media/ --write_images examples/media_out/
  • 1
  • 1

write_images:原始碼給出的解釋為”Directory to write rendered frames in write_images_formatimage format.examples”,即為儲存運行結果映像的路徑設定,其格式為 write_images_format ,預設為png格式。上面的命令預設將添加了骨骼的映像儲存到 media_out檔案夾下。

儲存json檔案
bin/OpenPose.exe --image_dir examples/media/ --write_keypoint_json examples/media_out/
  • 1
  • 1

write_keypoint_json:原始碼給出的解釋為”Directory to write the people body pose keypoint data. Set format with write_keypoint_format“,即為人體骨骼姿態的關節點資料檔案,檔案格式為write_keypoint_format,預設為 json格式。上面的命令預設將添加了骨骼的映像儲存到 media_out檔案夾下。 
表示一張人體骨骼關鍵點的json檔案,筆者沒有運行face和hand模型,因而只顯示了pose關節點的資料資訊。 

“pose_keypoints”即為當前映像中人體18個關節點的資料資訊,其具體的含義還有待深入的瞭解,這裡筆者就不做深究了,至於如何看出是18個關節點,其實我們隨便看一遍這個資料集,馬上就能看出大概3個資料為一組,即表示一個關節點,剛好有18組資訊。 
【2017/8/6】看過官方Github提供的文檔output.md才知道,原來一個關節點資訊包括(x,y,score)三個資訊,x和y即為映像中的座標資訊,取值範圍為(0,image.size),而score則表示預測評分,做了歸一化處理,取值範圍(0,1),越接近1值表示預測的越準確,其關節點的還原度就越高,同時姿態的還原度也就越高。 
以上關節點的座標資訊可以參考官方文檔給出的模型,如下,進行研究 
 
【PS】該模型提供的是COCO 18個關節點的骨骼模型。

儲存yml檔案
bin/OpenPose.exe --image_dir examples/media/ --write_keypoint examples/media_out/
  • 1
  • 1

write_keypoint:原始碼給出的解釋為”File extension and format for write_keypoint: json, xml, yaml & yml. Json not available for OpenCV < 3.0, use write_keypoint_json instead”,即為人體骨骼姿態的關節點資料檔案,檔案格式為 write_keypoint,預設為 yml格式。上面的命令預設將添加了骨骼的映像儲存到 media_out檔案夾下。 
【PS】注意opencv低於3.0版本的,不支援json格式的文本輸出,當然,官方提供的Opencv是高於3.0的,大家一開始學習為了避免問題,儘可能使用官配版本。 
表示一張人體骨骼關鍵點的yml檔案,筆者沒有運行face和hand模型,因而只顯示了pose關節點的資料資訊。 

使用同樣的辦法可以產生xml檔案,至於yml檔案中具體的含義,這裡筆者也不再詳細介紹,因為筆者暫時也還沒弄明白,歡迎已經弄清楚的小夥伴給筆者留言。 
【2017/8/6】 
關於yml檔案 
“%YAML:1.0”表示當前yaml使用版本為1.0; 
“pose_0”表示當前處理映像的全部姿態資訊,包括單人情況和多人情況; 
“sizes”表示當前”data”為大小是1*18*3的矩陣,其中,”1”表示統計到人的數量,”18”表示使用的model應該檢測到的關節點的數量,筆者使用的是COCO,故而是18,3表示一個關節點的座標和score資訊。 
“dt”這個東東筆者還沒弄清楚,懷疑是資料的格式為float,還有待驗證。 
“data”中具體資料的含義暫時還沒搞懂。

二、源碼修改編譯發布模式

源碼修改更是方便,現在讓我們來看看openposeDemo的原始碼內容, 

其中有這樣一段,這裡我看明確的看到注釋的“//Result Saving”資訊,以上9個值欄位便是為運行結果進行儲存所準備的,具體的含義,筆者在這裡就不再胡亂的翻譯了,大家可以看右側的欄位解釋,修改自己想要儲存的結果以及儲存結果的路徑後,就可以執行openposeDemo的程式,產生可執行檔啦,其產生的內容參見命令列模式方案。

三、題外話—關於Ubuntu

筆者在協助網友在Ubuntu上儲存運行結果的過程中發現,其實Ubuntu和Windows上的命令是一致的,只要吧可執行檔命令換成Ubuntu的,如下所示

./build/examples/openpose/openpose.bin --image_dir examples/media/ --write_images examples/media_out/
  • 1
  • 1

其他命令可以類比來進行修改。

【PS】以上內容為筆者探索openpose過程中的淺見,歡迎各位openpose愛好者指出問題和技術交流,如有不當之處,請留言給筆者。

【OpenPose-Windows】運行OpenposeDemo.exe 如何儲存映像運行結果及關節點資訊

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.