코드 3-8 행렬의 다양한 복사 방법 예제 [ch03/MatOp]
01 void MatOp2() 02 { 03 Mat img1 = imread("dog.bmp"); 04 05 Mat img2 = img1; 06 Mat img3; 07 img3 = img1; 08 09 Mat img4 = img1.clone(); 10 Mat img5; 11 img1.copyTo(img5); 12 13 img1.setTo(Scalar(0, 255, 255)); // yellow 14 15 imshow("img1", img1); 16 imshow("img2", img2); 17 imshow("img3", img3); 18 imshow("img4", img4); 19 imshow("img5", img5); 20 21 waitKey(); 22 destroyAllWindows(); 23 }
• 3행 dog.bmp 강아지 영상을 불러와서 img1에 저장합니다.
• 5~7행 복사 생성자와 대입 연산자를 이용하여 img1의 복사본 영상 img2, img3을 생성합니다(얕은 복사).
• 9~11행 Mat::clone()과 Mat::copyTo() 함수를 이용하여 img1의 복사본 영상 img4, img5를 생성합니다(깊은 복사).
• 13행 img1 영상의 모든 픽셀을 Scalar(0, 255, 255)에 해당하는 노란색으로 설정합니다.
• 15~19행 img1~img5 영상을 모두 새 창으로 출력합니다.