OpenCV 맛보기

세바님·2024년 3월 20일
0

영상인식이란?

영상 인식은 컴퓨터 비전의 한 분야로, 디지털 이미지나 비디오로부터 의미 있는 정보를 추출하는 기술을 말한다. 주로 이미지나 비디오에서 객체, 얼굴, 텍스트 등을 감지하고 인식하는 것을 포함한다.

OpenCV란?

OpenCV(Open Source Computer Vision Library)는 실시간 컴퓨터 비전을 처리하기 위한 오픈 소스 라이브러리이다.

이미지 및 비디오 처리, 객체 추적, 얼굴 인식 등 다양한 컴퓨터 비전 작업을 수행할 수 있다.

컴퓨터가 사람의 눈처럼 인식할 수 있게 처리해주는 역할을 하기도 하며, 우리가 많이 사용하는 카메라 어플에서도 OpenCV가 사용하기도 한다.

가상환경 만들기

가상환경을 만들기 위해 먼저 아나콘다를 설치한다.

다운 받고 나면 cmd에서 conda -v 를 입력해 아나콘다가 제대로 설치되었는지 확인한다.
잘 된다면 이제 가상환경을 만들 차례이다.
conda create -n 가상환경이름 python=파이썬 버전 형식으로 입력하면 가상환경이 생성된다.
가상환경을 사용하려면 conda activate 가상환경이름 을 입력하면 된다. 가상환경에서 나가려면 activate 대신 deactivate를 사용하면 된다.

가상환경에 주피터 노트북 연결하기

먼저 pip install jupyter notebook 을 입력해 주피터 노트북을 설치해 준다.
그 후에 python -m ipykernel install --user --name 가상환경이름 --display-name 표시할 이름 을 입력한다.
그 후 anaconda prompt에서 jupyter notebook 을 입력해주면?

로컬호스트에 서버가 켜지는 걸 볼 수 있다.

예제

이미지 출력

opencv를 이용해 사진을 한 번 출력해 보자.

import cv2
 
img = cv2.imread('이미지 경로')
cv2.imshow('image', img)
cv2.waitKey()
cv2.destroyAllWindows()

이렇게 입력을 하고 실행을 해 주면?

사진이 잘 나오는 것을 확인할 수 있다.

영상 읽기 & 출력

이번엔 웹캠으로 영상을 읽고 그 영상을 출력해 보자.

import cv2

cap = cv2.VideoCapture(0)

while(cap.isOpened()): 
    ret, frame = cap.read()
    if ret :
        cv2.imshow('frame', frame)
        
        if cv2.waitKey(1) & 0xFF == ord('q'): # q 또는 1 입력시 종료
            break
    else:
        break

cap.release()
cv2.destroyAllWindows()

실행을 해 보면~~

굿. 잘 나온다.

텍스트 추가하기

이번엔 이미지에 텍스트를 추가해 출력해 보자.

import cv2
 
img = cv2.imread('data/Dog.jpg')
name = "Dog"
font =  cv2.FONT_HERSHEY_SIMPLEX
img = cv2.putText(img, name, (500, 60), font, 2, (255,255,255), 2, cv2.LINE_AA)
cv2.imshow('image', img)
cv2.waitKey()
cv2.destroyAllWindows()


잘 된다 으하하

이번엔 웹캠으로 불러온 상에 텍스트를 넣어 보자.
그리고 이번엔 출력할 때는 컬러로, 녹화본은 흑백으로 저장해 볼 것이다.

import cv2

cap = cv2.VideoCapture(0)
fourcc = cv2.VideoWriter_fourcc(*'XVID')
out = cv2.VideoWriter('output.avi', fourcc, 20.0, (640, 480))

while cap.isOpened():
    ret, frame = cap.read()
    if ret:
        font = cv2.FONT_HERSHEY_SIMPLEX
        haduri = "HADURI"
        name = "Han Yejun"
        frame = cv2.putText(frame, haduri, (10, 50), font, 1, (0, 255, 255), 2, cv2.LINE_AA)
        frame = cv2.putText(frame, name, (460, 460), font, 1, (255, 255, 255), 2, cv2.LINE_AA)
        cv2.imshow('frame', frame)
        gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
        out.write(gray)

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

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

촬영 영상

녹화본 영상

profile
꼴리는대로 사는게 꿈입니다

0개의 댓글