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 |