본문 바로가기
C++/OpenCV

[OpenCV]Mat_ 클래스와 Matx 클래스

by usang0810 2019. 4. 10.

Mat_ 클래스는 Mat 클래스에서 상속된 템플릿 클래스이다.

행렬 원소 접근 연산을 많이 하거나 컴파일 타임에 행렬의 자료형을 알고 있는 경우에 Mat_ 클래스를 사용한다.

Mat_ 객체를 선언할 때에 <<연산자를 이용하여 개별 원소를 한 번에 초기화 할 수 있기 때문에 원소의 개수가 작은 행렬의 값을 쉽게 지정할 수 있다.

 

#include <opencv2\opencv.hpp>

using namespace cv;
using namespace std;

int main() {

	float data[] = {
		1.1f, 2.2f,
		3.3f, 4.4f
	};

	Mat_<int> m1(2, 4);
	Mat_<float> m2(2, 2);
	m1 << 1, 2, 3, 4, 5, 6;
	m2 << 1.1f, 2.2f, 3.3f, 4.4f;

	cout << "m1" << endl << m1 << endl << endl;
	cout << "m2" << endl << m2 << endl;

	return 0;
	
}

 

 

 

 

 

 

 

Mat_ 객체인 m2에 data배열을 넣을려고 하니 에러가 발생했다. 배열로는 삽입이 안되는 것 같다.

 

 

 

Matx 클래스

 

Matx클래스는 크기가 작은 행렬을 위한 템플릿 클래스이다.

객체 선언 시 클래스 이름과 '<', '>'안에 자료형, 행, 열을 지정하면 해당하는 자료형과 크기의 행렬이 생성된다.

기본적으로는 Matx<int, 2, 3>와 같이 선언하지만 Matx23d와 같이 간편하게 선언할수도 있다.

#include <opencv2\opencv.hpp>

using namespace cv;
using namespace std;

int main() {

	Matx<int, 2, 3> m1(1, 2, 3, 4, 5, 6);
	Matx32d m2(9, 8, 7, 6, 5, 4);

	cout << "m1" << endl << m1 << endl << endl;
	cout << "m2" << endl << m2 << endl;

	return 0;
	
}

 

 

 

 

 

 

 

'C++ > OpenCV' 카테고리의 다른 글

[OpenCV]vector 클래스  (0) 2019.04.11
[OpenCV]Mat 클래스  (0) 2019.04.10
[OpenCV]RotatedRect 클래스  (0) 2019.04.10
OpenCV의 기본 자료 구조  (0) 2019.04.10
두개의 회전사각형을 포함하는 bounding 사각형  (0) 2019.03.15