OpenCV實現人體動作識別

2021-10-09 23:16:12 字數 2997 閱讀 1022

版本:

注意:如果是opencv-python  3.3會報錯,cv2.dnn  找不到 readnet()

對於識別的行為超過400種:

opencv官方示例的樣本類別:

示例**:

專案目錄結構:

完整**:

# 執行以下命令:

# python activity_recognition_demo.py --model resnet-34_kinetics.onnx --classes action_recognition_kinetics.txt --input videos/activities.mp4

from collections import deque

import numpy as np

import argparse

import imutils

import cv2

# 構造引數

ap = argparse.argumentparser()

ap.add_argument(

"-m",

"--model",

required=true,

help="path to trained human activity recognition model")

ap.add_argument(

"-c", "--classes", required=true, help="path to class labels file")

ap.add_argument(

"-i", "--input", type=str, default="", help="optional path to video file")

args = vars(ap.parse_args())

# 類別,樣本持續時間(幀數),樣本大小(空間尺寸)

classes = open(args["classes"]).read().strip().split("\n")

sample_duration = 16

sample_size = 112

print("處理中...")

# 建立幀佇列

frames = deque(maxlen=sample_duration)

# 讀取模型

net = cv2.dnn.readnet(args["model"])

vs = cv2.videocapture(args["input"] if args["input"] else 0)

writer = none

while true:

# 讀取每幀

(grabbed, frame) = vs.read()

if not grabbed:

break

# 調整大小,放入佇列中

frame = imutils.resize(frame, width=640)

# 判斷是否填充到最大幀數

if len(frames) < sample_duration:

continue

# 佇列填充滿後繼續處理

blob = cv2.dnn.blobfromimages(

frames,

1.0, (sample_size, sample_size), (114.7748, 107.7354, 99.4750),

swaprb=true,

crop=true)

blob = np.transpose(blob, (1, 0, 2, 3))

blob = np.expand_dims(blob, axis=0)

# 識別**

net.setinput(blob)

outputs = net.forward()

label = classes[np.argmax(outputs)]

# 繪製框

cv2.rectangle(frame, (0, 0), (300, 40), (255, 0, 0), -1)

cv2.puttext(frame, label, (10, 25), cv2.font_hershey_******x, 0.8,

(0, 0, 255), 2)

# cv2.imshow("activity recognition", frame)

# 檢測是否儲存

# 按 q 鍵退出

# key = cv2.waitkey(1) & 0xff

# if key == ord("q"):

# break

print("結束...")

writer.release()

vs.release()

測試結果:

骨骼的動作識別資料集 人體骨骼動作識別

參賽者須同意如下保密規則 1.保密資訊範圍 平台方向參賽者披露或提供的全部資訊,以及參賽者因參加本次大賽從平台方處獲得 知曉所得的商業秘密和其他所有非第三方所知的資訊,包括但不限於 1 平台方提供的 語音 資料 等 2 平台方從第三方處獲得但應承擔保密義務的資料 資訊 3 其他通常不為平台方以外的人...

Kinect人體動作識別資料集

1.gaming datasets g3d 遊戲動作資料集,該資料集包含10個受試者進行20個遊戲動作 右拳 左拳 右拳 左拳 防守 高爾夫球揮拍 網球揮拍 網球發球 投球 瞄準和射擊 行走 跳躍 爬坡 蹲伏 駕駛汽車 揮手 拍打和鼓掌。有10種動作型別 走路,坐下,站起來,撿起,抬起來,扔,推,拉...

使用OPENCV進行人體識別

使用opencv人體識別,可以點官網示例鏈結,也可以往下看。安裝opencv 具體步驟有點。各位可以參考官網的安裝 教程.部分 如果幀數極低,可以在 中修改解析度。for 新增以下這段 來修改解析度 int n 960 可以更改960來設定解析度 size size size n,frame.row...