AI & ML/컴퓨터 비전

[디지털 영상 처리] Image Load 실습

JYUN(sia) 2024. 3. 26. 10:18

본 글은 Jupyter Notebook 을 활용한다.

 

Jupyter Notebook 기본 단축기

a : 지금 셀 앞에 새로운 셀 추가
b : 지금 셀 뒤에 새로운 셀 추가
m : 현재 셀을 Markdown 형식으로 변경
dd : 현재 셀 삭제
Ctrl + Enter : 현재 셀 실행
Shift + Enter : 현재 셀 실행 후, 다음 셀로 이동 (없을 시 새로운 셀 추가)

 

 

Image Load

1. 라이브러리 임포트

import numpy as np
import cv2

 

이미지를 로딩하기 위해서는 opencv 라이브러리를 활용하게 된다.

이때 이미지가 numpy 라이브러리를 활용한 array형태로 데이터가 불러와지게 된다.

 

 

2. 함수 정의

def show_img(image, title="image"): 
    cv2.imshow(title, image)  # 이미지 출력 (BGR)
    cv2.waitKey(0)            # 키보드 입력 대기 (아무키 입력시 꺼짐)
    cv2.destroyAllWindows()   # 나타는 Window 제거

 

shoe_img 함수는 두 개의 인자를 받는다.

  • image: 앞에서 말했던 numpy array형태로 저장된 데이터
  • title: 이미지를 새로운 창으로 띄울 때 나오는 이름

 

3. 불러올 이미지 주소 설정

# BMP Files
airplane = "C:/Users/Image Samples/airplane.bmp"
boat = "C:/Users/Image Samples/BoatsColor.bmp"
boy = "C:/Users/Image Samples/boy.bmp"
goldhill = "C:/Users/Image Samples/goldhill.bmp"

# JPG File
tungsten = "C:/Users/Image Samples/tungsten.jpg"

# PNG File
park = "C:/Users/Image Samples/park.png"

 

각자 이미지를 저장해놓은 주소를 설정하면 된다.

 

3-1.  오류 발견

Cell In[47], line 3
    airplane = "C:\Users\Image Samples\airplane.bmp"
                                                    ^
SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes in position 2-3: truncated \UXXXXXXXX escape

 

파일 탐색기에서 그대로 주소를 붙여 넣었다가 위와 같은 오류가 났었다.

이미지 주소를 잘못 적은 것인데,

역슬래시(백슬래시)가 아니라 슬래시로 바꿔 주어야 한다.

이런 건 왜 안 가르쳐주시는 흑흑

airplane이 아니라 boat의 주소처럼 입력해야 한다.

 

4. 파일 로드 및 컬러 변환

# 이미지 파일 로드 (BGR)
src = cv2.imread(image, cv2.IMREAD_COLOR) # [Height, Width, Channel]

# HSV 컬러 변환
hsv = cv2.cvtColor(src, cv2.COLOR_BGR2HSV)

# RGB 컬러 변환
rgb = cv2.cvtColor(src, cv2.COLOR_BGR2RGB)

# Gray 컬러 변환
gray = cv2.cvtColor(src, cv2.COLOR_BGR2GRAY)

 

 

src의 두 인자 중 image에 원하는 이미지 파일명을 넣으면 된다. 

 

예시로 airplane을 사용해 보겠다.

 

 

5. 출력 예시

print(f"- Data Type: {type(src)}")
print(f"- Data Shape: {src.shape} *Height x Width x Channel")
print(f"- Maximum Intensity: {src.max()}")
print(f"- Minimum Intensity: {src.min()}")

 

airplane 이미지를 넣어서 위 결과를 출력해보면

 

- Data Type: <class 'numpy.ndarray'>
- Data Shape: (512, 512, 3) *Height x Width x Channel
- Maximum Intensity: 234
- Minimum Intensity: 0
  • 512 x 512 크기와 BGR 채널을 가진 이미지
  • max_I 는 234
  • min_I 는 0

등 여러가지 정보를 알 수 있다.

 

6. 이미지 출력해보기

show_img(src)

 

0123
차례대로 기본 src, hsv, rgb, gray 로 출력한 것이다.