728x90
반응형
이번 포스트에서는 OpenCV와 mediapipe를 활용하여 손 인식 방법을 소개합니다.
개발에 앞서 Python 가상환경 구성과 필수 라이브러리 설치(예: opencv-python, mediapipe) 등 개발 환경 세팅 과정도 함께 진행할 예정입니다.
1. 개발 환경 세팅 및 필수 라이브러리 설치
먼저, OpenCV 기반 프로젝트를 진행하기 위한 개발 환경을 구성합니다. Anaconda를 이용해 별도의 가상환경(OpenCV)을 생성하고, VS Code를 통해 코드를 작성할 수 있습니다.
# 가상환경 생성 및 활성화
conda create -n OpenCV python=3.11 -y
conda activate OpenCV
# 필수 라이브러리 설치
pip install opencv-python
pip install mediapipe
pip install pyautogui
2. mediapipe를 사용하여 손 인식하기
import mediapipe as mp
import cv2
# 랜드마크 검출 라이브러리
mp_drawing = mp.solutions.drawing_utils
mp_hands = mp.solutions.hands
# 웹캠 사용
cap = cv2.VideoCapture(0)
try:
with mp_hands.Hands(
model_complexity=0, min_detection_confidence=0.5, min_tracking_confidence=0.5
) as hands:
while cap.isOpened():
success, image = cap.read()
if not success:
print("웹캠 연결 실패")
continue
# 성능을 향상시키려면 이미지를 작성 여부를 False으로 설정하세요.
image.flags.writeable = False
image = cv2.cvtColor(image, cv2.COLOR_RGB2BGR)
results = hands.process(image)
# 영상에 손 감지 주석 그리기 기본값 : True.
image.flags.writeable = True
image = cv2.cvtColor(image, cv2.COLOR_RGB2BGR)
if results.multi_hand_landmarks:
for hand_landmarks in results.multi_hand_landmarks:
mp_drawing.draw_landmarks(
image,
hand_landmarks,
mp_hands.HAND_CONNECTIONS,
)
cv2.imshow("MediaPipe 손 검출", image)
# ESC 키로 종료
if cv2.waitKey(5) & 0xFF == 27:
break
finally:
cap.release()
cv2.destroyAllWindows()
# drawing_styles 라이브러리
mp_drawing = mp.solutions.drawing_utils
mp_hands = mp.solutions.hands
mp_drawing_styles = mp.solutions.drawing_styles
for hand_landmarks in results.multi_hand_landmarks:
mp_drawing.draw_landmarks(
image,
hand_landmarks,
mp_hands.HAND_CONNECTIONS,
mp_drawing_styles.get_default_hand_landmarks_style(),
mp_drawing_styles.get_default_hand_connections_style(),
)
요약
- 개발 환경 세팅: Anaconda로 Python 가상환경을 구성하고, VS Code와 함께 opencv-python, mediapipe 등의 라이브러리를 설치합니다.
- 손 검출: mediapipe의 hands를 이용해 웹캠에서 손을 검출.
- 라이브러리 추가: # drawing_styles 라이브러리 추가하여 손 마디 스타일 추가
728x90
반응형
'Python > OpenCV' 카테고리의 다른 글
[OpenCV] - OpenCV(mediapipe)를 사용하여 얼굴 인식하기 (0) | 2025.03.13 |
---|