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]++; } } ...