Python/OpenCV

[OpenCV] - OpenCV(mediapipe)를 사용하여 손 인식하기 1

ro-jun 2025. 3. 13. 16:25
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