[openCV]내 웹캠 커스터마이징 하기

HeeSung Lee·2024년 3월 20일
0

먼저! 영상인식이 뭐냐

영상인식은 컴퓨터 비전 분야에서 중요한 기술 중 하나다. 이 기술은 디지털 이미지나 비디오에서 정보를 추출하고 해석하여 컴퓨터가 이해할 수 있는 형태로 변환하는 것을 목표로 한다.

영상인식은 일반적으로 다음과 같다.

  1. 전처리(Preprocessing)
    입력된 이미지나 비디오를 컴퓨터가 처리하기 쉬운 형태로 변환한다. 이 단계에서는 이미지 크기 조정, 색상 변환, 잡음 제거 등의 작업이 수행될 수 있다.

  2. 특징 추출(Feature Extraction)
    이미지나 비디오에서 중요한 정보를 추출하는 과정이다. 주요한 특징을 식별하고, 이를 사용하여 이미지를 설명하는 특징 벡터를 생성한다. 예를 들어, 에지, 코너, 텍스처 등의 특징이 추출될 수 있다.

  3. 학습 및 분류(Learning and Classification)
    미리 정의된 학습 데이터셋을 사용하여 기계학습 알고리즘을 훈련시키고, 추출된 특징 벡터를 사용하여 이미지를 분류하거나 객체를 인식한다. 주로 사용되는 기계학습 기술로는 지도학습(Supervised Learning), 비지도학습(Unsupervised Learning), 강화학습(Reinforcement Learning) 등이 있다.

  4. 평가 및 응용(Evaluation and Applications)
    마지막으로, 인식된 결과를 평가하고 필요에 따라 추가적인 후처리를 수행한다. 이러한 결과는 다양한 응용 분야에 활용될 수 있다. 예를 들어, 자율주행 자동차, 보안 시스템, 의료 진단, 로봇 공학, 환경 모니터링 등 다양한 분야에서 활용될 수 있다.

openCV

OpenCV(Open Source Computer Vision Library)는 실시간 컴퓨터 비전을 위한 오픈소스 라이브러리로, 이미지 및 비디오 처리, 객체 검출, 얼굴 인식, 동영상 분석 등 다양한 컴퓨터 비전 작업을 수행할 수 있도록 설계되었다. OpenCV는 C++, Python, Java와 같은 다양한 프로그래밍 언어에서 사용할 수 있다.

python환경에서 openCV써보기

먼저 아나콘다를 설치하자

brew install --cask anaconda

환경변수를 설정하고 가상환경을 만들자

conda create -n "환경명" python=<버전(ex:3.5이나 3.7)>

만든 가상환경으로 가자

conda activate "환경명"
jupyter notebook

주피터 노트북을 켜고 본격적으로 해보자

openCV 맛보기

먼저 간단하게 이미지와 영상을 출력하는 법을 알아도록 하도록 하자.

import cv2
 
img = cv2.imread('./cookie.png')

cv2.imshow('lovely cookie', img)
cv2.waitKey()
cv2.destroyAllWindows()

이렇게 하면 간단하게 맛있는 쿠키를 볼 수 있다.

import cv2

cap = cv2.VideoCapture(0)
print(cap.isOpened())
while(cap.isOpened()):
    ret, frame = cap.read()
    if ret :
        cv2.imshow('frame', frame)
        
        if cv2.waitKey(1) & 0xFF == ord('q'):
            break
    else:
        break

cap.release()
cv2.destroyAllWindows()

동영상은 위와 같이 띄울 수 있다. 직접 해보도록.

import cv2

cap = cv2.VideoCapture(0)
print(cap.isOpened())
while(cap.isOpened()):
    ret, frame = cap.read()
    if ret :
        cv2.imshow('frame', frame)
        
        if cv2.waitKey(1) & 0xFF == ord('q'):
            break
    else:
        break

cap.release()
cv2.destroyAllWindows()

위와 같이 코딩하면 웹캠을 띄울 수 있다.

이제 이미지와 웹캠에 글자를 써보자!!?!!

import cv2

img = cv2.imread('ㅇ.png', cv2.IMREAD_UNCHANGED)
blue = (255, 0, 0)
font =  cv2.FONT_HERSHEY_PLAIN

fontScale = 5

img = cv2.putText(img, "happy", (0, 100), font, fontScale, blue, 2, cv2.LINE_AA) 
cv2.imshow('lovely cookie' , img)
cv2.waitKey(0) 
cv2.destroyAllWindows()

이렇게 하면 왼쪽 위 글자가 생긴걸 볼 수 있다.

import cv2


cap = cv2.VideoCapture(0)

frame_width = int(cap.get(cv2.CAP_PROP_FRAME_WIDTH))
frame_height = int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT))
out = cv2.VideoWriter('output.avi', cv2.VideoWriter_fourcc('M','J','P','G'), 10, (frame_width,frame_height), False)

font = cv2.FONT_HERSHEY_SIMPLEX
text_position_left = (10, 50)
text_position_right = (frame_width - 200, 50)
font_scale = 2
font_thickness = 2
font_color = (0, 0, 150)

while(cap.isOpened()):
    ret, frame = cap.read()
    if not ret:
        break

    cv2.putText(frame, "HADURI", text_position_left, font, font_scale, font_color, font_thickness, cv2.LINE_AA)
    cv2.putText(frame, "HeeSung", text_position_right, font, font_scale, font_color, font_thickness, cv2.LINE_AA)

    cv2.imshow('Webcam', frame)
    gray_frame = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
    
    out.write(gray_frame)

    if cv2.waitKey(1) & 0xFF == ord('q'):
        break

cap.release()
out.release()
cv2.destroyAllWindows()

이렇게 웹 캠에도 커스텀을 할 수 있다!

gray_frame을 활용하면 회백색 필터를 껴 웹캠을 띄울 수 도 있다.

다음엔 더 신기한걸 공부해보자꾸나.

profile
프론트엔드 개발자를 꿈꾸는 고등학생입니다⌨️💻

0개의 댓글