티스토리 뷰
이번 글은 파이썬을 이용해서 이미지를 다루는 opencv-python 패키지를 간략하게 설명하고자 합니다.
우선 아나콘다 가상환경(opencv4)을 생성하기 위해서 다음과 같은 구문을 실행하고 활성화 한다
$ conda create -n opencv4 python=3.7
$ conda activate opencv4
다음으로 이미지 처리 패키지인 opencv-python를 설치한다.
pip install opencv-python # opencv 최신 패키지 설치
1) 이미지 읽어오기
설치된 python-opencv 패키지를 cv2로 불러온다.
import cv2
이미지를 읽어오기 위해서는 cv2의 imread함수를 이용하는데 이미지를 칼러 형태로 불러오기 위해서는 flag 옵션을 1이나 IMREAD_COLOR로 한다. 흑백이미지로 불러오기 위해서는 0이나 IMREAD_GRAYSCALE로 한다. 칼러와 알파채널까지 불러오기 위해서는 -1이나 IMREAD_UNCHANGED로 한다.
cv2.imread함수로 이미지를 불러오면 BGR 순서로 불러오고 파일형식인 넘파이 배열(numpy array) 형식으로 불러오게 된다.
cv2.imread(imgFile, flag)
imgFile : 이미지 파일 경로
flag : 이미지 파일을 읽어올 때 옵션
1 : IMREAD_COLOR : color(BGR)로 읽기, defult값, flag를 생략하면 자동으로 1로 인식
0 : IMREAD_GRAYSCALE : gray-scale로 읽기
-1 : IMREAD_UNCHANGED : color(BGR) + alpha channel 까지 포함하여 읽기
2) 이미지 출력하기
이미지를 출력하기 위해서 cv2.imshow()함수를 이용하고 잠시 윈도우 창을 대기 하기 위해서는 cv2.waitKey()함수를 이용하고 종료하기 위해서는 cv2.destroyAllWindows()함수를 이용한다.
cv2.imshow('title', img)
title : windows창 이름
img : 이미지 파일
cv2.waitKey(time)
키 입력을 대기
time : msec시간 단위, 공란 또는 0일 경우엔 무한정으로 대기
cv2.destroyWindows('title')
특정 이미지 창을 닫음
title : windows창 이름
cv2.destroyAllWindows()
모든 이미지 창을 닫음
에를 들어 이미지를 읽어오고 출력하여 종료하는 일련의 과정은 다음과 같다.
# main.py
import cv2
imageFile = './data/lena.jpg'
img = cv2.imread(imageFile)
img2 = cv2.imread(imageFile, 0)
img3 = cv2.imread(imageFile, -1)
cv2.imshow('Lena color', img)
cv2.imshow('Lena grayscale', img2)
cv2.imshow('Lena alpha channel',img3)
cv2.waitKey(5000) # 5초 후에 자동 close, 빈 칸이면 아무 키 누르면 close
cv2.destroyAllWindows()
3) 이미지 저장하기
이미지 저장은 cv2.imwrite()함수를 이용하고 매개변수로 저장할 파일이름과 저장할 데이터를 입력한다.
cv2.imwrite(dstFile, src)
dstFile : 저장될 파일 경로 + 파일명
src : 원본 이미지 파일
# write.py
import cv2
imageFile = './data/lena.jpg'
img = cv2.imread(imageFile)
cv2.imwrite('./data/Lena.bmp', img)
cv2.imwrite('./data/Lena.png', img)
# 0 ~ 9 중의 압축율로 png포맷으로 저장(숫자가 클수록 높은 압축)
cv2.imwrite('./data/Lena2.png', img, [cv2.IMWRITE_PNG_COMPRESSION, 9])
# 뒤의 숫자가 (0 ~ 100)작아질수록 파일 크기는 줄고, 화질이 나빠짐. jpg포맷으로 저장
cv2.imwrite('./data/Lena2.jpg', img, [cv2.IMWRITE_JPEG_QUALITY, 70])
'머신러닝 & 딥러닝' 카테고리의 다른 글
패션 데이터(fashion mnist)예측을 의한 딥러닝 기본 절차 (0) | 2022.08.24 |
---|---|
[실습-4] 다중 클래스 이미지 딥러닝 예측 모델 기본 구조 (0) | 2022.08.21 |
다중 클래스 이미지 분류 — Keras 및 TensorFlow 실습 (0) | 2022.08.16 |
Tensorflow Keras - CNN ImageDataGenerator 활용하기 (0) | 2022.08.12 |
cnn 모델을 이용한 꽃 종류를 예측하기 (0) | 2022.08.12 |