영상처리 3

Mat 클래스 ( 행렬의 복사와 부분 행렬 추출 )

행렬의 복사 복사에는 얕은 복사와 깊은 복사가 존재한다. 행렬 복사에도 똑같이 얕은 복사와 깊은 복사가 존재한다. 얕은 복사 얕은 복사를 하는 가장 간단한 방법은 복사 생성자와 대입 연산자를 사용하는 방법이다. Mat img2 = img1; // 복사 생성자 Mat img3; img3 = img1; // 대입 연산자 깊은 복사 깊은 복사는 행렬의 원소 데이터만 공유하는 것이 아닌, 새로운 공간을 할당하여 데이터를 복사하는 방식이다. 깊은 복사를 하기 위해선 Mat::clone() 또는 Mat::copyTo() 함수를 사용해야 한다. 함수의 정의는 다음과 같다. class Mat{ public Mat::clone() const; Mat::copyTo(OutputArray m) cosnt; Mat::copy..

Mat 클래스 ( 개요 - Mat 행렬의 깊이, 채널, 타입 )

Mat 행렬에서 어떤 자료형을 사용하는지에 대한 정보를 깊이 "depth" 라고 부른다. C/C++ 기본 자료형 중에서 unsigned char, signed char, unsigned short, signed short, int float, double 자료형을 지원하고, openCV 4 부터 16비트 실수형도 지원한다. Mat 행렬의 깊이를 다음과 같이 형식을 이용하여 나타낸다. CV_{U:S:F} bit-depth -> 비트 수, {U:S:F} -> U: unsigned, S: signed, F: float 예를 들어 unsigned char 자료형을 사용하면 CV_8U, float 자료형을 사용하면 CV_32F 로 나타낼 수 있다. Mat 행렬은 원소를 하나만 갖는 것이 아니라 2개 이상도 갖을 ..

Mat 클래스 ( 개요 - 특징과 멤버 변수 )

Mat class : openCV에서 가장 많이 사용되는 클래스로 행렬을 나타낼 때 사용한다. Mat 클래스의 여러가지 특징 2차원 행렬뿐만 아니라 고차원 행렬 표현 한 개 이상의 채널을 가질 수 있다. 정수, 실수, 복소수 등으로 구성된 행렬 또는 벡터를 저장할 수 있다. 그레이스케일 또는 컬러 영상을 저장할 수 있다. 경우에 따라 벡터 필드, 포인트 클라우드, 텐서, 히스토그램 등 정보를 저장하기도 한다. => 2차원 영상 데이터를 저장하고 처리하는 용도로 가장 많이 사용되고 있다. Mat 클래스의 멤버 변수(public) Mat::dims 행렬의 차원을 나타냄, 영상과 같은 2차원의 경우 값이 2 Mat::rows 행렬의 행 개수, 영상의 경우 세로 픽셀 크기 (3차원 이상의 경우 -1) Mat::..