이 코드는 mat4 영상의 모든 픽셀을 파란색에 해당하는 Scalar(255, 0, 0)으로 설정하고, 행렬 mat5의 모든 원소 값은 1.f로 설정합니다.
지금까지 설명한 다양한 Mat 행렬 생성과 원소 값 초기화 예제 코드를 모아서 코드 3-7에 나타냈습니다. 코드 3-7의 MatOp1() 함수는 실제로 실행되더라도 아무런 출력을 하지 않으며, 다만 나중에 Mat 객체를 생성해야 할 경우에 참고할 수 있도록 예제 코드를 모아 놓은 것입니다. MatOp1() 함수에서 사용된 모든 변수는 지역 변수로 선언되었으므로 함수가 종료되면 자동으로 소멸됩니다.
코드 3-7 Mat 객체 생성 [ch03/MatOp]
01 void MatOp1() 02 { 03 Mat img1; // empty matrix 04 05 Mat img2(480, 640, CV_8UC1); // unsigned char, 1-channel 06 Mat img3(480, 640, CV_8UC3); // unsigned char, 3-channels 07 Mat img4(Size(640, 480), CV_8UC3); // Size(width, height) 08 09 Mat img5(480, 640, CV_8UC1, Scalar(128)); // initial values, 128 10 Mat img6(480, 640, CV_8UC3, Scalar(0, 0, 255)); // initial values, red 11 12 Mat mat1 = Mat::zeros(3, 3, CV_32SC1); // 0's matrix 13 Mat mat2 = Mat::ones(3, 3, CV_32FC1); // 1's matrix 14 Mat mat3 = Mat::eye(3, 3, CV_32FC1); // identity matrix 15 16 float data[] = { 1, 2, 3, 4, 5, 6 }; 17 Mat mat4(2, 3, CV_32FC1, data); 18 19 Mat mat5 = (Mat_<float>(2, 3) << 1, 2, 3, 4, 5, 6); 20 Mat mat6 = Mat_<uchar>({2, 3}, { 1, 2, 3, 4, 5, 6 }); 21 22 mat4.create(256, 256, CV_8UC3); // uchar, 3-channels 23 mat5.create(4, 4, CV_32FC1); // float, 1-channel 24 25 mat4 = Scalar(255, 0, 0); 26 mat5.setTo(1.f); 27 }