프로그래밍 언어 및 IT 정보/opencv_python

[opencv_python] 1. 이미지 및 동영상(카메라) 읽어오기

Himer_torr 2022. 7. 6. 10:24
반응형

이번 포스팅부터는 영상 처리 라이브러리 중  제일 유명한 opencv를 공부하며 알아보도록 하겠습니다.

저는 Visual studio codeopencv 4.5.5 버전을 이용하였습니다.

 

 

 이미지 읽기

가장 기본적인 이미지를 읽는 예제입니다.

import cv2 
import sys

path = 'torr.jpg'				# 표시할 이미지 경로            ---1
img = cv2.imread(path, cv2.IMREAD_COLOR)	# 이미지를 읽어서 img 변수에 할당 ---2
if img is None:					# 이미지가 잘불러왔는지 확인
    sys.exit("Could not read the image.")
cv2.imshow("Display window", img)		# 읽은 이미지를 화면에 표시      --- 3
cv2.waitKey(0)					# 아무 키가 입력될 때 까지 대기      --- 4
cv2.destroyAllWindows()				# 창 모두 닫기            --- 4

처음으로는 불러올 이미지 경로를 잡아줍니다. 저는 저희집 강아지 사진을 받아왔습니다. 직접 찍은 사진을 활용해서 코드를 돌려보시는것을 추천드립니다 :)

 

 

cv2.imread(fileName, flag)

Parameters

  • fileName(str) - 이미지 파일의 경로
  • flag(int) - 이미지 파일을 읽을 때의 Option.
    cv2.IMREAD_COLOR : 이미지 파일을 COLOR로 읽어들입니다.
    cv2.IMREAD_GRAYSCALE: 이미지 파일을 Grayscale로 읽어 들입니다. 이미지 처리시 중간단계로 많이 사용
    cv2.IMREAD_UNCHANGED: 이미지 파일을 alpha channel까지 포함하여 읽어들입니다.
  • returns : image 객체 행렬

 

cv2.imshow(title, image)

Parameters

  • title (str) – 윈도우 창의 Title
  • image (numpy.ndarray) – cv2.imread() 의 return값

 

쉽게 생각하

면 2번으로 이미지를 불러오고 3번으로 이미지를 보여준다라고 생각하시면 됩니다.

cv2.waitkey()는 keyboard입력을 대기하는 함수

cv2.destroyAllWindows() 는 화면에 나타난 윈도우를 종료하는 함수입니다.

코드 실행 결과값

 

동영상  읽기

지금까지는 영상(image), 즉 하나의 이미지를불러왔습니다. 이번에는 동영상을(video)불러와보도록 하겠습니다.

사실 동영상은 영상과 차이가 많이 없습니다. 그러므로 쉽게 이해할 수 있으실겁니다.

import cv2 
import sys

cap = cv2.VideoCapture('./torr.mp4')	# 경로에 있는 영상불러오기  ---1
#cap = cv2.VideoCapture(0)	# 연결되어 있는 카메라 불러오기  ---2

while cap.isOpened():
    ret, frame = cap.read()	# 카메라 한프레임 읽어오기  ---3
    if ret:
        cv2.imshow('camera Window',frame)	# 한프레임 보여주기  ---4
        if cv2.waitKey(1) & 0xFF == ord('q'):	# 끄고싶을때 받는 입력  ---5
            break
    else:
        break
       
cap.release()	# VideoCapture 객체를 release  ---6
cv2.destroyAllWindows()	# 윈도우 닫기  ---7

위 예제는 동영상 읽기의 기본적인 예제입니다. 저는 저희 강아지가 노는 동영상으로 예제를 진행하였습니다.

여러분도 자신이 원하는 동영상으로 재생해보세요 :)

1번에서 VideoCapture object 를 생성합니다. 변수로는 camera device index (2번과같이)를 넘겨주거나 동영상 파일의 path를 넘겨줍니다.

while문의 loop를 돌면서 한프레임씩 frame을 읽어들이고 4번에서 프레임을 보여줍니다.

영상 재생 도중 끄고 싶다면 키보드 q키를 눌러 loop를 탈출하거나 영상의 ret변수의 반환이 없을 경우 탈출합니다.

6,7번은 영상이 끝난 후 object를 메모리 할당을 해제하고 윈도우를 닫습니다.

 

여기까지 간단하게 영상입출력/동영상입출력에 관해 알아보았습니다.

코드에 문제가 있거나 궁금한 사항들은 댓글에 남겨주세요 :) 

반응형