더북(TheBook)

기존의 mat1 행렬이 3×4 크기였지만 mat1.resize(5, 100) 코드에 의해 5×4 크기의 행렬로 변경되고, 새로 추가된 행의 원소는 모두 100으로 설정됩니다. 실제로 이 코드를 실행한 후 mat1 행렬을 출력해 보면 다음과 같습니다.

[  1,   2,   3,   4;
 5,   6,   7,   8;
 9,  10,  11,  12;
 100, 100, 100, 100;
 100, 100, 100, 100]

이미 존재하는 행렬에 원소 데이터를 추가하고 싶을 때에는 Mat::push_back() 멤버 함수를 사용할 수 있습니다. Mat::push_back() 함수는 다음과 같이 다양한 형식으로 정의되어 있습니다.

template<typename _Tp> void Mat::push_back(const _Tp& elem);
template<typename _Tp> void Mat::push_back(const Mat_<_Tp>& elem);
template<typename _Tp> void Mat::push_back(const std::vector<_Tp>& elem);
void Mat::push_back(const Mat& m);

elem

행렬의 맨 마지막 행에 추가할 원소 데이터

m

행렬의 맨 마지막 행에 추가할 행렬. *this와 타입과 열 개수가 같아야 합니다.

 

Mat::push_back() 함수 인자로 _Tp& 또는 std::vector<_Tp>& 타입을 사용할 경우, *this 행렬은 1열짜리 행렬이어야 합니다. 만약 Mat_<_Tp>& 또는 Mat& 타입을 인자로 사용할 경우에는 *this 행렬과 인자로 전달된 m 행렬의 열 개수가 같아야 합니다. 앞에 나열한 네 가지 Mat::push_back() 함수 모두 *this 행렬의 타입과 인자로 전달된 데이터의 타입은 같아야 합니다. 다음은 Mat::push_back() 함수를 이용하여 3×4 크기의 행렬 mat1에 1×4 크기의 행렬 mat3을 맨 마지막 행으로 추가하는 예제 코드입니다.

Mat mat3 = Mat::ones(1, 4, CV_8UC1) * 255;
mat1.push_back(mat3);
신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.