본문 바로가기

etc/FastCampus 챌린지

[패스트캠퍼스 수강 후기] 컴퓨터비전인강 100% 환급 챌린지 5 회차

728x90
반응형

5회차.. 벌써 지침
합리화 하기 시작한다

 

 

▪ OpenCV 영상 데이터 자료형과 NumPy 자료형

OpenCV 자료형 ( 1채널 ) NumPy 자료형 구분
cv2.CV_8U numpy.uint8 8비트 부호 없는 정수
cv2.CV_8S numpy.int8 8비트 부호 있는 정수
cv2.CV_16U numpy.uint16 16비트 부호 없는 정수
cv2.CV_16S numpy.int16 16비트 부호 있는 정수
cv2.CV_32S numpy.int32 32비트 부호 있는 정수
cv2.CV_32F numpy.float32 32비트 부동소수형
cv2.CV_64F numpy.float64 64비트 부동소수형
cv2.CV_16F numpy.float16 16비트 부동소수형

* floating point

• 그레이스케일 영상: cv2.CV_8UC1 → numpy.uint8, shape = (h, w) 
• 컬러 영상: cv2.CV_8UC3 → numpy.uint8, shape = (h, w, 3)

import sys
import cv2

# 영상 불러오기
img1 = cv2.imread('niko_gray.jpg', cv2.IMREAD_GRAYSCALE)

img2 = cv2.imread('niko.jpg', cv2.IMREAD_COLOR)

if img1 is None or img2 is None:
    print("Image Load failed!")
    sys.exit()

# 영상의 속성 참조
print('type(img1):', type(img1))    #numpy.ndarray
print('img1.shape:', img1.shape)    #542, 542
print('img2.shape:', img2.shape)    #542, 542, 3
print('img1.dtype:', img1.dtype)    #uint8
print('img2.dtype:', img2.dtype)    #uint8

if img1.ndim == 2:
    print('img1 is a grayscale image')
    

cv2.imshow('img1',img1)
cv2.imshow('img2',img2)
cv2.waitKey()


# 영상의 크기 참조

h, w = img2.shape[:2]
print('img2 size: {} x {}'.format(w, h))

if len(img1.shape) == 2:
    print('img1 is a grayscale image')
elif len(img1.shape) == 3:
    print('img1 is a truecolor image')

if len(img2.shape) == 2:
    print('img1 is a grayscale image')
elif len(img2.shape) == 3:
    print('img1 is a truecolor image')

 

영상의 생성, 복사, 부분 영상 추출

numpy.empty(shape, dtype=float, ...) -> arr
numpy.zeros(shape, dtype=float, ...) -> arr
numpy.ones(shape, dtype=None, ...) -> arr
numpy.full(shape, fill_value, dtype=None, dtype=None, ...) -> arr

▪ 지정한 크기로 새 영상 생성하기 
 • shape: 각 차원의 크기 (h, w) 또는 (h, w, 3) 
 • dtype: 원소의 데이터 타입. 일반적인 영상이면 numpy.uint8 지정 
 • arr: 생성된 영상(numpy.ndarray) 
 
• 참고사항: 
▪ numpy.empty() 함수는 임의의 값으로 초기화된 배열을 생성
▪ numpy.zeros() 함수는 0으로 초기화된 배열을 생성 
▪ numpy.ones() 함수는 1로 초기화된 배열을 생성 
▪ numpy.full() 함수는 fill_value로 초기화된 배열을 생성

import numpy as np
import cv2

새 영상 생성하기

img1 = np.empty((240,320), dtype=np.uint8)
# 세로 240 x 가로 320 형식의 grayscale image 로 생성 
# empty 함수를 사용하였기 때문에 모든 pixel 값은 쓰레기(버려지는) 값으로 채워지게 됨

img2 = np.zeros((240,3203), dtype=np.uint8)
# 세로 240 x 가로 320 형식의 color image 로 생성
# zeros 함수를 사용하였기 때문에 모든 pixel 값은 0으로 저장되서 black 으로 표현 됨

img3
 = np.ones((240,320), dtype=np.uint8) * 255 
# 1의 값이지만 각 BGR 을 255 를 곱하여 255로 만듦 (흰색)
# 세로 240 x 가로 320 형식의 color image 로 생성
# zeros 함수를 사용하였기 때문에 모든 pixel 값은 1으로 저장되서 black 으로 표현 됨
# zeros 와 ones 는 0과 1의 값으로 차이가 있지만 육안으로 확인하기 불가능하다 

img4 = np.full((240,320), 128, dtype=np.uint8)

# 세로 240 x 가로 320 형식의 color image 로 생성
# full 함수를 사용하였기 때문에 모든 pixel 값을 128로 선정

img5 = np.full((240,320,3), (0, 255, 255), dtype=np.uint8)
# 세로 240 x 가로 320 형식의 color image 로 생성
#full 함수를 사용하였기 때문에 모든 pixel 값은 (0, 255, 255) 로 저장되서 노랑색으로 표현 됨

cv2.imshow('img1'img1)
cv2.imshow('img2'img2)
cv2.imshow('img3'img3)
cv2.imshow('img4'img4)
cv2.imshow('img5'img5)

cv2.waitKey()
cv2.destroyAllWindows()

 

728x90
반응형