이번 글에서는 여러분들이 쉽게 접할 수 있는
OpenCV 실전 프로젝트 예시 모음을 작성해 보겠습니다.
얼굴 검출 기반 출입 통제 시스템
OpenCV의 Haar Cascade나 DNN을 이용해 실시간 얼굴을 검출하고,
등록된 얼굴과 비교해 출입 여부를 판단하는 시스템이에요.
주로 사무실, 연구실, 기숙사 출입 통제 시스템 등에서 활용돼요.
얼굴 인식 외에도 출입 로그를 CSV나 DB로 저장하면 유용하게 확장할 수 있어요.
얼굴 인식은 cv::CascadeClassifier 또는 cv::dnn::Net으로 구현할 수 있어요.
face_cascade = cv2.CascadeClassifier("haarcascade_frontalface_default.xml") frame = cv2.imread("face.jpg") faces = face_cascade.detectMultiScale(frame, 1.3, 5) for (x, y, w, h) in faces: cv2.rectangle(frame, (x, y), (x + w, y + h), (0, 255, 0), 2) |
번호판 인식 기반 주차 관리 시스템
차량의 번호판을 인식해 출입 차량을 관리하거나,
자동으로 출차 시간을 계산하는 시스템이에요.
OpenCV의 윤곽선 검출(findContours)과 Tesseract OCR을 결합해 구현할 수 있어요.
주차장 출입구에 카메라를 설치하고,
번호판 검출 후 텍스트 인식해 DB와 연동하면 실전 프로젝트로 훌륭해요.
import pytesseract plate_roi = img[y:y+h, x:x+w] text = pytesseract.image_to_string(plate_roi) print("번호판:", text) |
웹캠 기반 실시간 필터 앱 만들기 (Snapchat 스타일)
얼굴 검출 후 눈, 코, 입 위치를 기준으로
AR 필터(예: 안경, 고양이 귀, 마스크 등)를 덧씌우는 방식이에요.
Dlib, Mediapipe 같은 얼굴 랜드마크 탐지 모델과 함께 쓰면
재미있는 앱을 만들 수 있어요.
학생 프로젝트나 유튜브 콘텐츠용으로 인기가 많고, 오픈소스 코드도 많이 있어요.
filter_img = cv2.imread("mask.png", cv2.IMREAD_UNCHANGED) frame[y:y+h, x:x+w] = apply_overlay(frame[y:y+h, x:x+w], filter_img) |
손 제스처 인식으로 화면 제어하기
카메라로 손을 인식하고 손가락 개수, 위치 등을 바탕으로 화면 제어하는 시스템이에요.
예를 들어 손가락 1개는 다음 슬라이드, 2개는 이전 슬라이드 등으로 활용 가능해요.
손 모양을 컨투어로 분석하거나,
Mediapipe의 Hand Tracking을 사용하면 정확도가 높아요.
if finger_count == 1: print("Next Slide") elif finger_count == 2: print("Previous Slide") |
동영상에서 움직임 감지 및 침입자 경보 시스템
정지 상태의 카메라에서 움직임이 생기면 이를 감지하고,
경보를 울리거나 녹화를 시작하는 시스템이에요.
배경 제거(BackgroundSubtractorMOG2), 프레임 간 차이 분석,
또는 윤곽선 변화량으로 구현 가능해요.
보안 시스템이나 IoT 카메라 솔루션에 쉽게 접목할 수 있어요.
fgbg = cv2.createBackgroundSubtractorMOG2() fgmask = fgbg.apply(frame) contours, _ = cv2.findContours(fgmask, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE) if len(contours) > 0: print("움직임 감지!") |
이상으로 OpenCV 실전에서 사용될 프로젝트에 대해 알아보았습니다.
'IT' 카테고리의 다른 글
OpenCV로 영상 내 움직임 감지하기 (0) | 2025.08.01 |
---|---|
OpenCV와 Python의 차이점 및 장단점 비교 (0) | 2025.07.06 |
OpenCV 디버깅 방법과 흔한 오류 해결법 (0) | 2025.07.05 |
OpenCV 환경설정 팁 - 다양한 IDE 환경에서 (0) | 2025.07.04 |
OpenCV로 이미지 분류 모델의 결과를 시각화하는 방법 (0) | 2025.07.03 |