드디어 오늘 본격적인 Mat클래스를 배우게 되는데!
opencv하면서 IplImage처럼 반드시 쓰이는 그런 클래스입니다!!!
Mat함수는 다필요없고 그냥 오늘하는거만 배웠다가 나중에 응용되어 나오면 그때가서 배우면 되용!
일단 소스부터 ㄱㄱ
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 |
#include<opencv2\opencv.hpp>
using namespace cv;
using namespace std;
int main(void)
{
Mat A(2, 3, CV_8UC1);
Mat B(2, 3, CV_8UC1, Scalar(0));
Mat C(2, 3, CV_8UC3, Scalar(1, 2, 3));
cout << A << endl;
cout << B << endl;
cout << C << endl;
system("pause");
return 0;
} |
cs |
결과는?
1
2
3
4
5
6
7 |
[205, 205, 205;
205, 205, 205]
[ 0, 0, 0;
0, 0, 0]
[ 1, 2, 3, 1, 2, 3, 1, 2, 3;
1, 2, 3, 1, 2, 3, 1, 2, 3]
|
cs |
결과는 이렇게 나옵니다 설명해보면
6번줄에 Mat A 가 선언되어있고 괄호안에 2,3 이 있는데 이는 2x3의 배열을 생성하겠다는 소리에요@@ CV_8UC1 이건자료형이래요 초반엔 몰라도 별지장없음!
그래서 2x3행렬에 초기화를 해주지않았으므로 결과창에 205라는 임의의 값이 들어간 듯합니다!
그리고 Mat B를 보시면 Scalar(0)으로 초기화를 해놨죠? 그래서 결과에 전부 0이 나온겁니다.
Mat C를 보시면 CV_8UC3으로 되어있져? 처음에 저는 CV_8UC1로 해서 결과가 1,1,1,1,1,1,1로 나와서 당황했는데 알고보니 8UC3으로 했어야 됬더라구요
초기화는 각각1,2,3 으로 초기화 되었씁니다!!@@!@#
보통 Mat행렬이라고 부르는데 이유는 엄청큰 행렬속에 1채널, 다채널 등의 수치데이터를 집어넣고 사용하기 때문입니다
그런데말입니다. Mat에대한것은 프로그래밍을 하면서 접해보는게 짱입니다. Mat클래스중에 잘 안쓰는 함수도 많거덩요 물론 깊이파고들면 많이사용하겠지만...ㅋㅋ
암튼 Mat에관련되서 앞으로 쓸 포스팅에 있으면 설명 넣어드리겠습니다!! 다음엔 그냥 바로 그래픽 출력으로 가봅시다!@
'OpenCV' 카테고리의 다른 글
Scalar_ 클래스 (0) | 2016.12.07 |
---|---|
Rect_ 클래스 (0) | 2016.12.07 |
Size_ 클래스 (0) | 2016.12.07 |
Point3_ 클래스 (0) | 2016.12.07 |
Point_ 클래스 (0) | 2016.05.07 |