더북(TheBook)

Mat::ptr( ) 함수 사용 방법

두 번째로 살펴볼 행렬 원소 접근 방법은 Mat::ptr() 멤버 함수를 이용하는 방법입니다. Mat::ptr() 함수는 Mat 행렬에서 특정 행의 첫 번째 원소 주소를 반환합니다. Mat::ptr() 함수는 여러 가지 형식으로 재정의되어 있지만, 가장 널리 사용하는 Mat::ptr() 함수 형식은 다음과 같습니다.

template<typename _Tp> 
_Tp* Mat::ptr(int y)

y

참조할 행 번호

반환값

(_Tp* 타입으로 형 변환된) y번째 행의 시작 주소

 

Mat::ptr() 함수는 인자로 전달된 y번째 행의 시작 주소를 반환합니다. Mat::ptr() 함수도 Mat::at() 함수와 마찬가지로 템플릿으로 정의되어 있기 때문에 Mat::ptr() 함수를 사용할 때 행렬 원소의 자료형을 명시적으로 지정해야 합니다. Mat::ptr() 함수는 지정한 자료형의 포인터를 반환하며, 이 포인터를 이용하여 지정한 행의 원소에 접근할 수 있습니다.

Mat::ptr() 함수를 사용하여 행렬 원소 값을 참조하는 방법을 예제 코드를 통해 알아보겠습니다. CV_8UC1 타입의 행렬 mat1이 있다 가정하고, Mat::ptr() 함수를 사용하여 mat1 행렬의 모든 원소 값을 1씩 증가시키려면 다음과 같이 코드를 작성합니다.

for (int j = 0; j < mat1.rows; j++) {
  uchar* p = mat1.ptr<uchar>(j);
  for (int i = 0; i < mat1.cols; i++) {
      p[i]++;
  }
}    ...
신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.