더북(TheBook)

이 코드에서 img4img.clone() 함수에 의해 반환되는 행렬 객체를 저장합니다. 변수 img5는 일단 비어 있는 행렬 객체로 생성되고, 이후 Mat::copyTo() 함수에 의해 img1 객체에 저장된 영상이 img5 객체로 복사됩니다. 결국 img4img5는 각각 픽셀 데이터를 저장할 메모리 공간을 따로 가지고 있고, img1에 저장된 강아지 영상의 복사본을 저장합니다. Mat::clone()Mat::copyTo() 함수처럼 완전히 메모리 공간을 새로 할당하여 픽셀 값을 복사하는 형태의 복사를 깊은 복사(deep copy)라고 합니다.

복사 생성자 또는 대입 연산자를 이용하는 행렬의 얕은 복사와 Mat::clone() 또는 Mat::copyTo() 함수를 이용한 행렬의 깊은 복사 차이를 직관적으로 이해할 수 있는 예제 코드를 코드 3-8에 나타냈습니다. 코드 3-8의 MatOp2() 함수는 앞에서 설명하였던 다양한 복사 방법을 이용하여 img1에 저장된 강아지 영상을 새로운 영상 img2, img3, img4, img5에 각각 복사합니다. 그리고 img1 영상의 모든 픽셀 값을 노란색에 해당하는 Scalar(0, 255, 255)로 설정한 후, 각각의 영상을 화면에 출력합니다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.