본문 바로가기
openCV

[openCV] openCV기초

by _eunji_ 2020. 1. 7.

Mat

- 영상을 표현하기 위한 기본 데이터 타입

- 행렬의 약어 Matrix

- 영상은 픽셀로 표현하는데 2차원 배열로 표현 가능

 

4가지 옵션

- Mat(int rows, int cols, int type) 행의 개수, 열의 개수, 데이터 타입

- Mat(Size size, int type) 매트릭스 크기, 각 픽셀의 크기

- Mat(const Mat & m) 이미 선언되어 있는 m크기를 가지는 매트릭스를 복사해오는 매트릭스 선언

- Mat (Size size, int type, const Scalar&s) 매트릭스 크기, 각 픽셀의 크기, 각 픽셀에 할당 값

 

가장 많이 쓰이는 픽셀 타입

CV_8U/ CV_8UC3

- CV : 컴퓨터 비전 약어

- 8 : 하나의 픽셀의 값을 표현하기 위한 비트 수가 8비트라는 뜻

- U : [0~255] 양의 정수이기 때문에 Unsigned integer

- CV_8UC3에서 'c'channel

 

ex)

Mat mtx(3, 3, CV_32F) 세로가 3이고 가로가 3인 float

Mat cmtx(10, 1, CV_64FC2) 세로가 10이고 가로가 1인 채널이 2float

Mat img(1080, 1920, CV_8UC3) = Mat img(Size(1920,1080),CV_8UC3)

 

Opencv를 이용한 영상 읽는 방법

Mat imread(const string& filename, int flags=1)

filename : 파일 이름

flags : 컬러 or 그레이 스케일 영상 등의 읽기 옵션 (1이면 컬러, 0이면 그레이스케일 / 디폴트 값은 컬러 영상)

imshow(winname, mat) winname 윈도우에 mat 영상 출력 함수

 

Opencv를 이용하여 비디오 읽는 방법

1. 비디오를 읽기 위해 videoCapture라는 클래스 활용 =>videoCapture cap

While(1){

Cap>>frame;

If(frame.empty()){

Cout<<”end of vedio”<

Break;

}

Imshow(“video”,frame)

Waitkey(33); # Waitkey는 33밀리세컨드 만큼 정지, 사용자의 입력을 기다림

}

 

waitkey(0) 이면 키보드 입력이 있을 때까지 무한 대기하여 윈도우가 없어지지 않게 한다.

만약 Waitkey가 없으면 사용자가 인지하지 못할 정도로 프레임이 출력 따라서 Waitkey 사용함으로써 자연스러운 비디오 출력 가능

 

2. webcam을 이용하여 비디오 출력 가능

VideoCapture cap(0); => 0으로 설정한 이유는 대부분 컴퓨터에서 디바이스 넘버가 0이기 때문

 

VideoCapture Class

grab() : 다음 프레임을 가져오기 위한 함수

open() : 동영상 프레임을 읽어오는 함수

operator>> VideoCapture Class가 가지고 있는 동영상의 특정 프레임을 매트릭스에 전달

get() : VideoCapture Class가 가지고 있는 비디오에 대한 상세한 정보 확인할 수 있음

  • get으로 얻을 수 있는 정보들 찾아보기

 

영상과 동영상 재생 방법

imshow()를 이용하여 이미지 출력

영상을 재생하기 위해서는 while문 안에서 imshow를 이용하여 프레임 출력 후 Waitkey함수를 이용하여 특정 시간을 기다린다. 만약 Waitkey(0)이라면 계속 기다리는 상태를 뜻한다.

'openCV' 카테고리의 다른 글

[openCV] 메모리 관리 및 픽셀 엑세스  (0) 2020.01.11
[openCV] Drawing함수  (0) 2020.01.11
[openCV] Mat연산자  (0) 2020.01.11
[openCV] 색공간의 이해  (0) 2020.01.06
[openCV] 디지털 영상과 디지털 비디오  (0) 2020.01.06

댓글