본문 바로가기

난 이 분야 전문가야!/OpenCV

컴퓨터비전인강 1주차 :: 영상의 이해 및 openCV 주요함수

Ch 01. OpenCV-Python 시작하기 - 02. 영상의 구조와 표현

Ch 01. OpenCV-Python 시작하기 - 05. 영상 파일 불러와서 출력하기

Ch 01. OpenCV-Python 시작하기 - 06. OpenCV 주요 함수 설명

 

 

- 인사말 -

오늘부터 패스트캠퍼스에서 수강중인 "openCV를 활용한 컴퓨터비전과 딥러닝" 강의에 대한

학습 기록지를 작성하려합니다!

컴퓨터비전 공부를 제대로 시작해보기 위해 패스트캠퍼스의 100% 환급 이벤트에 참여해 보았는데요.

매주 2번씩 이런 학습 기록을 3달간 작성해야 한다니 과연 제가 해낼수 있을지...큭

일단 시작해보겠습니다ㅎ

 

오늘 학습한 내용은 영상의 전반적인 이해와 openCV 라이브러리에서 자주 사용되는 주요 함수에 대해 알아 보았습니다.

 

 

>> 영상의 표현법 픽셀(Pixel)!!!

 

픽셀은 바둑판 모양의 격자에 나열되어 있는 형태로 구성되어 있다. -> 코드에서 2차원 배열과 같은 형태!

또한 카메라에서 자주 사용되는 용어인 화소 또한 펙셀이라고 볼 수 있다.

예를 들어 2000만 화소 == 픽셀 2000만개

 

 

>> 영상의 표현 방법

 

그레이스케일 영상

gray scale 영상이란 흑백사진처럼 색 정보가 없이 밝기 정보만으로 구성된 영상이다.
컬러영상과는 다르게 밝기만을 수치로 나타내기 때문에 256단계로 표현이 가능하다.

- 밝기 성분을 0 ~ 255   (255가 빛이 가장 강하다는 의미로 흰색을 뜀)


C와 python에서는 각각 unsigned char, numpy.unit8 data type을 사용하여 gray scale 영상 밝기 값을 저장한다.
(위 data type은 1Byte를 
사용하고 1Byte가 표현할 수 있는 값의 개수가 256까지 이기 때문에 매우 효율적)

 

트루컬러 영상

컬러 사진처럼 색상 정보를 가지고 있어 다양한 색상을 표현할 수 있는 영상이다. 

컬러 영상이라고 보면 된다.

Red, green, blue 세가지 색상의 수치를 각각 가지고 있어 256^3 해서 총 16,777,216 가지의 색상을 표현 가능하다.   

- 0:        해당 색 성분이 전혀 없는 상태  

- 255:     해당 색 성분이 가득 있는 상태

여기서 알아야할 점!! RGB는 빛의 삼원색 기준! 색의 삼원색과는 다르다!

 

RGB값을 저장하기 위해

C/C++에서는 struct class

python에서는 tuple, numpy.ndarray 데이터 타입을 사용한다.

 

 

>> 영상 데이터의 크기

 

gray scale: 가로 x 세로

color: 가로 x 세로 x 3

 

만약 영상의 크기가 512x512일 경우

gray scale 영상의 파일 크기는 512 x 512 = 262,144 Bytes

color 영상의 파일 크기는 512 x 512 x 3 = 786,432 Bytes

 

 

>> 영상 파일 형식 특징

 

영상 파일 형식에는 크게 4가지가 있다.

(BMP, JPG, PNG, GIF)

 

BMP: 픽셀 데이터를 압축하지 않고 그대로 저장(파일 용량이 큼)
JPG:
주로 사진과 같은 컬러 영상을 저장 손실 압축(픽셀 값이 조금 바뀜)

GIF: 256 색상 이하의 영상을 저장, 화질 저하가 심함

PNG: 압축은 하되 무손실(많이 사용됨)

 

 

>> openCV 주요 함수

 

cv2.imread(filename, flag=None) - 실패할 경우 None 반환

filename: 영상 파일 이름 및 경로

flag 옵션 값:

                cv2.IMREAD_COLOR               컬러영상으로 읽기

                cv2.IMREAD_GRAYSCALE         그레이 스케일 영상으로 읽기

                cv2.IMREAD_UNCHANGED      영상파일 속성 그대로 읽기

cv2.namedWindow(windowName) 영상을 출력할 창을 하나 만드는 함수

cv2.imshow(windowName, img) 영상을 출력하는 함수

cv2.waitKey() key 입력을 기다리는 함수

cv2.destroyAllWindows() 열려 있는 모든 창을 닫아줌

cv2.imwrite(filename, img, params=None) 영상 저장

params:

         ex) [cv2.IMWRITE_JPEG_QUALITY, 90] jpg 파일 90% 압축 불린 값 반환

 

 

 

강의 링크: bit.ly/2NTHHz7

728x90