為何以姿勢追蹤(或稱捕捉骨架,本文以姿勢追蹤稱呼)作為街道裝置的策略。姿勢的改變是可以影響人的情緒的。在《Standing tall and standing wide: Body positions have effects on how people feel》這篇研究中,主要探討身體姿勢如何影響人們情感狀態。研究者進行了一系列實驗,重點關注了兩種不同的身體姿勢:站得高和站得寬。他們通過觀察參與者在這兩種姿勢下的反應來研究姿勢與情感之間的關聯。
研究結果呈現,站得高的姿勢(例如挺胸、站直)與積極情感有關聯。參與者在站得高的姿勢下,所偵測的情緒報告有更高的自信感和力量感,同時表現出更積極的情緒狀態。這種姿勢可能有助於提升自尊和自信,以及改善情感體驗。
因此,這項研究表明身體姿勢可以對人們的情感狀態產生影響。站得高的姿勢有助於提升積極情感和自信感,而站得寬的姿勢則與風險承受能力和動機相關。這些發現有助於我們更好地理解身體姿勢與情感之間的關係,同時也為身體語言和情感調節領域的研究提供了新的視角(Körner 2022)。
由此研究可以理解,透過擴大姿勢,可以影響人的情緒。因此在情緒緊張的情況下,改變姿勢也是改善情緒的方式。故希望以姿勢追蹤的方式呈現互動裝置,透過裝置擾動人對於行走路徑的常態,改變姿態而轉換情緒。
實作與測試 筆者預期利用街道攝影機與互動模型連接,先依照文獻回顧的建議,整理成四個預期框架作為銜接方式。
1. 影機連接:將街道攝影機與嵌入式系統連接起來,以便獲取攝影機的影像。
2. 影像處理:使用適當的視訊處理庫或框架(例如OpenCV)讀取和處理攝影機的視訊流,成為MediaPipe提供處理的輸入數據(Fortes 2022)。
3. 整合MediaPipe:使用MediaPipe框架的相關模塊和功能,將錄影的影像傳遞到MediaPipe進行視覺感知處理。可以使用MediaPipe提供的預訓練模型,進行姿勢追蹤(Fortes 2022)。
4. 分析和應用:根據MediaPipe的輸出結果,進行分析進到虛擬模型裡面。
想針對從第四點延伸應用。利用media pipe抓取由點與線所構成的人體骨架,將MediaPipe框架整合到Grasshopper建模軟體中進行模型測試,並回測研究預期目的。進行的步驟如下:
1. 匯入MediaPipe模型:在Grasshopper中,使用Python程式語言,匯入MediaPipe模型。使用MediaPipe的功能和類別來處理及時影像數據。Mediapipe Holistic 集合了人體姿勢、面部標誌和手部追蹤三種模型與相關的演算法,可以偵測身體姿勢、臉部網格、手掌動作,完整偵測則會產生543 個偵測節點 (33 個姿勢節點、468、個臉部節點和每隻手、21 個手部節點 )。(教育學習網)
Mediapipe 全身偵測 ( Holistic )圖片來源:https://steam.oxxostudio.tw/category/python/ai/ai-mediapipe-holistic.html.
2. 設定資料輸入和輸出:在Grasshopper中,利用plug-in: Ghowl作為資料輸入和輸出的介面,以便將MediaPipe框架的數據與grasshopper的互動模型進行交互。本研究是以攝影鏡頭捕獲即時視頻、載入預訓練模型、將資料傳遞給MediaPipe進行處理,並將結果的點位顯示在Grasshopper中,座位模型的控制點。
Mediapipe 全身偵測 ( Holistic )/圖片來源:https://steam.oxxostudio.tw/category/python/ai/ai-mediapipe-holistic.html.
3. 設定資料輸入和輸出:在Grasshopper中,利用plug-in: Ghowl作為資料輸入和輸出的介面,以便將MediaPipe框架的數據與grasshopper的互動模型進行交互。本研究是以攝影鏡頭捕獲即時視頻、載入預訓練模型、將資料傳遞給MediaPipe進行處理,並將結果的點位顯示在Grasshopper中,座位模型的控制點。
4. 測試和除錯:確認確保資料能夠正確地從Grasshopper傳遞給MediaPipe,並正確地處理和顯示互動模型結果。
# source: https://steam.oxxostudio.tw/category/python/ai/ai-mediapipe-pose.html
# source: https://github.com/yucheno/opencv2gh/blob/master/opencv2GH.py
# 按 q 跳出
import mediapipe as mp
import cv2
# 設定 UDPsocket 與 pickle(專門用於python的json)
import socket
import json
def UDP_client(IP, port, message):
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
sock.sendto(bytes(message, 'utf-8'), (IP, port))
設定銜接端口,銜接ghowl,請調整成自己的IP
IP = "127.0.0.1"
port = 5003
# 輸出資料
# 偵測骨架 並輸出 socket 等待接收
mp_drawing = mp.solutions.drawing_utils # mediapipe 繪圖方法
mp_drawing_styles = mp.solutions.drawing_styles # mediapipe 繪圖樣式
mp_pose = mp.solutions.pose # mediapipe 姿勢偵測
cap = cv2.VideoCapture(0)
#以上cap = cv2.VideoCapture(0)需視鏡頭位置調整(0)(1)(2)
# 啟用姿勢偵測
with mp_pose.Pose(
min_detection_confidence=0.5,
min_tracking_confidence=0.5) as pose:
if not cap.isOpened():
print("Cannot open camera")
exit()
while True:
ret, img = cap.read()
if not ret:
print("Cannot receive frame")
break
# webcam 為 4:3 縮小尺寸,加快演算速度
img = cv2.resize(img, (640, 480))
img2 = cv2.cvtColor(img, cv2.COLOR_BGR2RGB) # 將 BGR 轉換成 RGB
results = pose.process(img2) # 取得姿勢偵測結果
# 根據姿勢偵測結果,標記身體節點和骨架
mp_drawing.draw_landmarks(
img,
results.pose_landmarks,
mp_pose.POSE_CONNECTIONS,
landmark_drawing_spec=mp_drawing_styles.get_default_pose_landmarks_style())
# 使用 pickle 匯出為字串
all = {'data': []}
if results.pose_landmarks:
for id, lm in enumerate(results.pose_landmarks.landmark):
all['data'].append({
'x': lm.x,
'y': lm.y,
'z': lm.z,
})
outputjson = json.dumps(all, indent=4)
UDP_client(IP, port, outputjson)
cv2.imshow('oxxostudio', img)
if cv2.waitKey(5) == ord('q'):
break # 按下 q 鍵停止
cap.release()
cv2.destroyAllWindows()
資料來源:
Fortes (2022). "Deep Learning based Human Pose Estimation using OpenCV and MediaPipe." from https://medium.com/nerd-for-tech/deep-learning-based-human-pose-estimation-using-opencv-and-mediapipe-d0be7a834076 . Jong-Wook KimORCID, J.-Y. C., Eun-Ju Ha,Jae-Ho Choi (2023). "Human Pose Estimation Using MediaPipe Pose and Optimization Method Based on a Humanoid Model." from https://www.mdpi.com/2076-3417/13/4/2700 . Körner, R. (2022). "Standing tall and standing wide: Body positions have effects on how people feel." AMERICAN PSYCHOLOGICAL ASSOCIATION . Vasileios Moysiadis, D. K., Lefteris Benos,,Patrizia Busato ,Athanasios Anagnostis,Dimitrios Kateris ,Simon Pearson (2022). "An Integrated Real-Time Hand Gesture Recognition Framework for Human–Robot Interaction in Agriculture." applied science 12 : 17. 法蘭斯 (2023). "Mediapipe Holistic全身辨識體感玩超級瑪莉." from https://www.youtube.com/watch?v=1ZjmQEVsHdE . 教育學習網, S. "Mediapipe 全身偵測 ( Holistic )." from https://steam.oxxostudio.tw/category/python/ai/ai-mediapipe-holistic.html . 課程學習:TKU=建築系碩士班=BIM工程整合應用實務 授課老師:蕭吉甫