이번에는 실제로 원하는 서비스를 만들기 전에 OpenCV의 함수들을 조금 알아보고자 합니다!
기본 함수
패키지
import cv2
import numpy as np
OpenCV의 함수는 아니지만, 일단 패키지는 기본으로 포함해 겠죠!
OpenCV는 보통 Numpy*와 함께 사용합니다.
*Numpy란? 벡터 행렬계산을 효율적으로 처리하기 위한 파이썬의 모듈입니다. 기본적으로 데이터를 가공하는 도구로 쓰여서, 단일적으로는 무언가를 할 수는 없고, opencv같은 모듈에서 같이 사용합니다! |
이미지 읽기
cv2.imread(fileName, flag=None)
영상이나 이미지를 처리하려면, 일단 불러와야 겠죠?
imread는 해당 fileName을 불러옵니다. flags는 추가적인 영상파일에 옵션입니다.
flags를 안쓰면 기본값은 cv2.IMREAD_COLOR값으로 들어갑니다.
예시로 몇 가지를 해보겠습니다!
# 1. 'racoon.jpg'파일을 RGB값으로 컬러로 읽습니다!
racoon_image = cv2.imread('racoon.jpg' , cv2.IMREAD_COLOR)
# 2. 'cat.png'파일을 GRAYSCALE, 회색조로 읽습니다.
cat_image = cv2.imread('cat.png' , cv2.IMREAD_GRAYSCALE)
# 3. 'giffaffe.jpg'파일을 파일속성 그대로 불러옵니다.
Giraffe_ image = cv2.imread('giraffe.jpg , cv2.IMREAD_UNCHANGED)
이미지 보기(출력)
cv2.imshow('title' , img)
이미지나 영상를 우리가 볼 수 있도록 디스플레이창으로 출력해주는 명령어입니다.
title은 영상을 출력할 창 이름 입니다. 원하는 아무런 이름을 넣으면 됩니다.
img는 출력할 영상데이터, 즉 창에 띄울 이미지나 영상입니다.
특징으로는 'cv2.waitKey' 명령어와 함께 사용해야합니다.
cv2.imshow('racoon' , img)
cv2.waitKey()
간단한 예시로 이렇게 사용합니다.
크기 조절
cv2.resize(filename, (width, height))
이 명령어로 이미지의 크기를 조절할 수 있습니다.
width는 가로, height는 세로 크기입니다.
키보드 입력 대기
cv2.waitKey() == 'ASCII 코드값':
이 명령어는 '키보드 입력 대기'라는 명령어 입니다.
imshow명령어와 함께 이용되며, 키보드 값은 ASCII 코드를 따릅니다.
가장 많이 쓰는 ASCII 코드 값으로는 27(Esc), 9(Tab), 13(Enter) , 37(왼쪽화살표), 38(위쪽화살표), 39(오른쪽화살표),
40(아래쪽화살표) 등등... 이 있습니다.
waitKey()의 괄호안의 값은 입력 대기를 하는 시간을 의미합니다. 1000을 1초로 칩니다.
# 3초동안 대기합니다.
cv2.waitKey(3000)
#Enter(13)를 눌러야 종료합니다.
while True:
if cv2.waitKey() == 13:
break
간단한 예시입니다!
예시 샘플1
import numpy as np
import cv2
img_racoon = cv2.imread('racooon.jpg', cv2.IMREAD_COLOR)
img_racoon_gray = cv2.imread('racooon.jpg', cv2.IMREAD_GRAYSCALE)
img_racoon_unchange = cv2.imread('racooon.jpg', cv2.IMREAD_UNCHANGED)
racoon = cv2.resize(img_racoon, (200, 200))
gray_racoon = cv2.resize(img_racoon_gray, (200, 200))
Real_racoon = cv2.resize(img_racoon_unchange, (200, 200))
while(True):
cv2.imshow('super racoon', racoon)
cv2.imshow('gray racoon', gray_racoon)
cv2.imshow('Real racoon', Real_racoon)
k = cv2.waitKey(30) & 0xff
if k == 27: # press 'ESC' to quit
break
cv2.destroyAllWindows()
지금까지의 명령어로 간단한 예시를 만들어 보았습니다.
짜잔! 결과로 200x200의 사이즈로 컬러이미지, 흑백이미지, 기본값 이미지를 잘 불러온 것을 확인할 수 있습니다.
저장하기
cv2.imwrite('fileName' , img, params)
이미지를 처리할 수 있다면, 저장을 할 수도 있습니다!
fileName에는 저장할 이미지 또는 영상의 이름, img는 이미지를 불러온 변수이름 입니다.
params는 파일의 저장 옵션을 정해줄 수 있습니다.
저장위치를 하위폴더에 해주고 싶다면 fileName을 '하위폴더/fileName.jpg' 이렇게 해주면 됩니다.
Ex)
cv2.imwrite('image\racoon.jpg', racoon)
창 닫기
cv2.destroyAllWindows()
cv2.destroyAllWindows명령어는 창을 닫을 수 있습니다.
열려있는 모든 창을 닫아주는 명령을 실행합니다.
만약 원하는 창만 닫고 싶다면,
cv2.destroyWindow(창이름)
이렇게 사용하면 지정한 창만 닫을 수 있습니다.
Ex)
cv2.destroyAllWindows()
cv2.destroyWindow('racoon')
창 열기, 이동, 크기변경
cv2.nameWindow(windowName, flags)
cv2.moveWindow(windowName, x, y)
cv2.resizeWindow(windowName, width, height)
cv2.nameWindow는 새로운 창을 띄울 수 있습니다.
기본값으로 이미지의 크기에 맞춰서 변경됩니다. 이후에 창의 크기를 조정이 안됩니다.
cv2.nameWindow(windowName, cv2.WINDOW_NORMAL)
조정되는 이미지로 창을 띄우려면, 이렇게 사용하면 됩니다.
cv2.moveWindow는 창의 위치를 이동할 수 있는 명령어입니다.
x,y는 이동할 좌표입니다.
cv2.resizeWindow는 창의 크기를 조절할 수 있습니다.
width는 변경할 창의 가로크기, height는 창의 세로크기입니다.
이번에는 OpenCV의 기본함수들에 대해서 알아보았습니다.
다음에는 이미지처리를 할 수 있는 함수들을 알아보겠습니다.
빠이!
'AutoDriving > OpenCV' 카테고리의 다른 글
OpenCV 프로젝트 - 환경 설정, VScode로 OPenCV 사용하기 (0) | 2022.06.07 |
---|