OpenCV 가상 드럼 패드

OpenCV와 MediaPiple를 활용하여 웹캠 앞에서 도구 없이 맨손으로 화면속 8개의 드럼 패드를 터치하여 연주할 수 있는 실시간 가상 드럼 머신
- 개발 기간
- 3일
- 2026.05.21 ~ 2026.05.23
- 사용 기술
- 4개
- Python · OpenCV · MediaPipe · PyGame
사용 기술
- Python
- OpenCV
- MediaPipe
- PyGame
주요 기능 및 특징
- 하이브리드 2중 타격 판정 (Dual-Mode Hitting):
- 일반 타격 모드: 검지 손가락이 드럼 패드 원 밖에서 안으로 진입하는 순간 즉시 감지합니다.
- Z축 찌르기 모드: 드럼 패드 영역 내에 손가락을 머무르게 한 상태에서 박자에 맞춰 카메라 방향으로 '쿡!' 찌르면, 화면상 검지 마디의 면적 변화율()을 순간적으로 계산하여 박자를 놓치지 않고 완벽하게 타격합니다. ΔSize
- 레이턴시(지연 시간) 최소화: 오디오 출력을 담당하는
pygame.mixer버퍼 사이즈를512로 최적화하여 손을 뻗는 순간 밀림 없이 즉시 드럼 소리가 출력됩니다. - 유연한 창 모드 지원: 실행 시 기본 크기의 창으로 열리며, 우측 상단의 최대화 버튼을 누르면 모니터 해상도에 맞춰 캠 화면이 꽉 차는 전체화면(Full Screen) 연주를 지원합니다. (키보드
F키로도 전체화면 토글이 가능합니다.)
기술 스택
- Python
- ovencv-python
- mediapipe
- pygame
파일 구조
프로젝트를 실행하기 전, 같은 폴더 내에 sounds라는 이름의 폴더를 생성하고 사용할 드럼 원샷 샘플 음원(.wav) 8개를 아래 이름에 맞춰 배치해야 합니다.
📁 프로젝트 폴더/
│ ├── drum.py
│ └── 📁 sounds/
│ ├── crash.wav (크래쉬 심벌)
│ ├── ride.wav (라이드 심벌)
│ ├── tom1.wav (하이 톰톰)
│ ├── tom2.wav (로우 톰톰)
│ ├── hihat.wav (하이햇 심벌)
│ ├── snare.wav (스네어 드럼)
│ ├── rimshot.wav (림샷 효과음)
│ └── bass.wav (베이스/킥 드럼)
설치 및 실행 방법
라이브러리 설치
터미널이나 명령 프롬프트(CMD)를 열고 아래 명령어를 입력하여 필수 패키지를 설치합니다.
pip install opencv-python mediapipe pygame numpy
프로젝트 실행
python drum.py
게임 조작 및 사용법
드럼 연주: 화면에 2x4 격자로 정렬된 8개의 원형 드럼 패드가 나타나면, 양손 검지 손가락 끝을 카메라에 비춰 조준선(크로스헤어)을 움직입니다.
타격 판정: 검지 끝 조준선을 드럼 원 안으로 툭 집어넣으면 해당 드럼의 고유 사운드가 터지며, 타격된 패드는 0.12초 동안 고유의 색상으로 꽉 채워집니다.
단축키 안내:
F : 화면 전체화면 / 일반창 모드 토글
Q : 프로그램 및 웹캠 즉시 종료