Home OpenCV 행렬 복사
Post
Cancel

OpenCV 행렬 복사

해당 포스팅은 OpenCV 4로 배우는 컴퓨터 비전과 머신러닝 (황선규 저)를 보고 공부하며 개인적인 용도를 위해 정리한 글이다.

복사 생성자를 통한 행렬 복사

  • 복사 생정자 = 를 통한 행렬 복사
  • cv::Mat img2 라는 객체를 생성 후 cv::Mat img 객체를 참조 -img 를 참조하는 얕은 복사이기 때문에 img 변화에 영향을 받음
1
2
3
4
5
6
7
8
9
10
#include "opencv2/opencv.hpp"

int main(void)
{
    cv::Mat img = cv::imread("./path/to/image");

    cv::Mat img2 = img;

    return 0;
}

clone() 함수를 통한 행렬 복사

  • 픽셀 데이터를 공유하는 것이 아닌 메모리 공간을 새로 할당 (깊은 복사)
  • 자기 자신과 동일한 cv::Mat 객체를 완전히 새로 만들어 반환
1
2
3
4
5
6
7
8
9
10
#include "opencv2/opencv.hpp"

int main(void)
{
    cv::Mat img = cv::imread("./path/to/image");

    cv::Mat img2 = img.clone();

    return 0;
}

copyTo() 함수를 통한 행렬 복사

  • 픽셀 데이터를 공유하는 것이 아닌 메모리 공간을 새로 할당 (깊은 복사)
  • 함수 이름에서 알 수 있듯이 원형이 되는 함수를 변수로 받는 객체로 복사한다
1
2
3
4
5
6
7
8
9
10
11
#include "opencv2/opencv.hpp"

int main(void)
{
    cv::Mat img = cv::imread("./path/to/image");

    cv::Mat img2;  // 빈 객체 생성
    img.copyTo(img2);  // 빈 객체에 img를 복사

    return 0;
}
This post is licensed under CC BY 4.0 by the author.

OpenCV 클래스

OpenCV 행렬 생성