需要項(xiàng)目的請關(guān)注、私信
1、原理介紹
1.1 Opencv
Opencv(Open Source Computer Vision Library)是一個基于開源發(fā)行的跨平臺計(jì)算機(jī)視覺庫,它實(shí)現(xiàn)了圖像處理和計(jì)算機(jī)視覺方面的很多通用算法,已成為計(jì)算機(jī)視覺領(lǐng)域最有力的研究工具。在這里我們要區(qū)分兩個概念:圖像處理和計(jì)算機(jī)視覺的區(qū)別:圖像處理側(cè)重于“處理”圖像–如增強(qiáng),還原,去噪,分割等等;而計(jì)算機(jī)視覺重點(diǎn)在于使用計(jì)算機(jī)來模擬人的視覺,因此模擬才是計(jì)算機(jī)視覺領(lǐng)域的最終目標(biāo)。Opencv主要用來讀取視頻,以及展示視頻。
1.2 Mediapipe
Mediapipe是google的一個開源項(xiàng)目,可以提供開源的、跨平臺的常用機(jī)器學(xué)習(xí)(machine learning)方案。Mediapipe實(shí)際上是一個集成的機(jī)器學(xué)習(xí)視覺算法的工具庫,包含了人臉檢測、人臉關(guān)鍵點(diǎn)、手勢識別、頭像分割和姿態(tài)識別等各種模型。可以獲取人體33個關(guān)鍵點(diǎn)的坐標(biāo)。本文將利用人體的相關(guān)特征坐標(biāo)進(jìn)行姿態(tài)的識別。
2、實(shí)驗(yàn)步驟
本次實(shí)驗(yàn)主要分為兩個部分,分別為人體姿態(tài)檢測以及界面設(shè)計(jì)。
2.1 導(dǎo)入工具包
如圖所示,分別為進(jìn)行頁面設(shè)計(jì)的PyQt5工具包,包括QTWidgets、QtCore、QtGui。QtGui包含多種基本圖形功能的類,包括但不限于:窗口集、事件處理、2D圖形、基本的圖像和界面、字體和文本類。QtCore包含核心的非GUI功能,此模塊用于處理程序中涉及到的時間、文件、目錄、數(shù)據(jù)類型、流、網(wǎng)址、MIME類型、進(jìn)程或線程等對象。QtWidgets包含了一整套UI元素組件,用于建立符合系統(tǒng)風(fēng)格的用戶界面。還有用于進(jìn)行姿態(tài)識別的opencv與Mediapipe。
2.2 中文輸入
通過PIL工具構(gòu)建可以在圖片上進(jìn)行中文打印的函數(shù)。
2.4 建立姿態(tài)位置信息庫
創(chuàng)建繪圖工具與工具自帶的位置信息庫。
讀取視頻,按幀讀取,對每幀圖像變換通道,并利用自帶的位置信息庫在圖中進(jìn)行特征點(diǎn)位置信息檢測。
2.5 位置信息獲取
獲取位置特征信息位置坐標(biāo)信息,包括左右肩、左右跨、左右膝蓋、左右眼、左右手踝、左右胳膊肘以及左右腳踝等。
獲取角度信息。
2.6 姿態(tài)識別
通過不同的角度信息以及各個位置點(diǎn)的特征信息進(jìn)行不同動作的判斷。并對實(shí)時狀態(tài)進(jìn)行繪制。
3 實(shí)驗(yàn)結(jié)果與評價
本次實(shí)驗(yàn)主要選取一支單人民族舞視頻,對視頻動作進(jìn)行分解,識別其中的動作屬于哪一種,由于視頻中涉及多個動作,在實(shí)驗(yàn)中只選擇10個典型的動作進(jìn)行識別,具體的動作分類為下表所示。
其中每個動作的示例如圖所示:
這里就舉兩個例子。
具體的基于界面的操作流程加展示界面如下所示:
首先運(yùn)行class_win.py文件點(diǎn)擊運(yùn)行生成檢測界面如圖所示:
界面右上角兩個按鈕分別代表選擇視頻文件與運(yùn)行檢測,首先點(diǎn)擊選擇視頻文件,打開文件夾選擇合適的視頻,點(diǎn)擊確定,再點(diǎn)擊運(yùn)行,結(jié)果如圖所示:
畫面從左往右分別為原始視頻畫面,實(shí)時檢測結(jié)果畫面,以及信息統(tǒng)計(jì)畫面。
實(shí)際的檢測結(jié)果,以動作一和動作2為例,如圖所示:
博客主頁:https://blog.csdn.net/weixin_51141489,需要源碼或相關(guān)資料實(shí)物的友友請關(guān)注、點(diǎn)贊,私信吧!