안녕하세요, 왕초보 코린이를 위한 코딩유치원에 오신 것을 환영합니다.
코딩유치원에서는 파이썬 기초부터 사무자동화, 웹크롤링, 데이터 분석 등의 다양한 패키지까지 초보자도 알기 쉽도록 내용을 정리해 놓았습니다.
업무는 물론 투자에도 도움이 될만한 전자공시시스템(DART)나 텔레그램(Telegram) 관련 패키지도 배울 수 있으니 많은 관심 부탁드립니다.
1. OpenCV로 불러온 이미지의 속성 확인하기
OpenCV 라이브러리는 이미지를 numpy.ndarray로 표현하며, 이 배열의 각 요소값(픽셀값, 보통 0~255) 들이 모여서 이미지로 표현되는 방식입니다.
따라서 cv2.imread( ) 함수로 어떤 이미지를 불러오면 컴퓨터는 numpy.ndarray로 표현하며, 불러온 이미지는 아래와 같은 4가지 속성을 가집니다.
1) ndim: 차원의 수
- 그레이스케일 영상: 2
- 컬러 영상: 3
2) shape: 각 차원의 크기
- 그레이스케일 영상: (h, w)
- 컬러 영상: (h, w, 3)
3) size: 전체 원소 개수 (전체 픽셀의 갯수)
- 그레이스케일 영상: h x w
- 컬러 영상: h x w x 3
4) dtype: 원소의 데이터 타입. 영상 데이터는 uint8
- 그레이스케일 영상: cv2.CV_8UC1 → numpy.uint8, shape = (h, w)
- 컬러영상: cv2.CV_8UC3→numpy.uint8,shape=(h,w,3)
코드로 이미지 하나를 흑백과 컬러로 불러와서 각 속성들이 어떤 값을 갖는지 확인해보세요.
# step1.OpenCV 라이브러리 불러오기
import cv2
# step2.고양이 이미지 흑백과 컬러로 가져오기
img1 = cv2.imread('cat.bmp', cv2.IMREAD_GRAYSCALE)
img2 = cv2.imread('cat.bmp', cv2.IMREAD_COLOR)
# step3.이미지의 여러가지 속성들이 어떤 값을 가지는지 확인해보기 (size, shape, ndim, dtype)
print('#img1')
print('shape:', img1.shape)
print('size',img1.size)
print('ndim:',img1.ndim)
print('dtype:',img1.dtype)
print('#img2')
print('shape:', img2.shape)
print('size:',img2.size)
print('ndim:',img2.ndim)
print('dtype:',img2.dtype)
<출력 결과>
#img1
shape: (480, 640)
size 307200
ndim: 2
dtype: uint8
#img2
shape: (480, 640, 3)
size: 921600
ndim: 3
dtype: uint8
2. 원하는 사이즈의 이미지 생성하기
OpenCV는 위에서 보셨 듯이 numpy 패키지의 ndarray로 이미지 표현합니다.
따라서 이미지를 새로 생성하기 위해서는 numpy 패키지를 이용해서 ndarray를 생성하고 배열의 요소에 값들을 채워넣어주어야 하죠.
이미지는 아래와 같은 방식으로 생성 가능합니다. 아직 어디 쓰일지는 모르겠으니 이런 것이 있다는 것 정도만 알고 넘어가겠습니다.
import cv2
import numpy as np
img1 = np.zeros((480, 640, 3), dtype=np.uint8) # color image
img2 = np.ones((480, 640), dtype=np.uint8) * 255 # white
img3 = np.full((480, 640, 3), (0, 255, 0), dtype=np.uint8) # green
cv2.imshow('image1', img1)
cv2.waitKey()
cv2.imshow('image2', img2)
cv2.waitKey()
cv2.imshow('image3', img3)
cv2.waitKey()
cv2.destroyAllWindows()
<실행 결과>
오늘 준비한 내용은 여기까지입니다.
감사합니다.
<참고 자료>
패스트 캠퍼스 강의_OpenCV를 활용한 컴퓨터비전과 딥러닝 올인원 패키지 Online