더북(TheBook)

mean() 함수는 마스크 연산을 지원하므로 필요한 경우 mask 영상을 지정하여 특정 영역의 원소 평균을 구할 수도 있습니다. sum() 함수와 mean() 함수를 이용하여 행렬의 합 또는 평균을 구할 때에는 이들 함수의 반환형이 Scalar라는 점을 기억해야 합니다. 만약 입력 행렬이 그레이스케일 영상처럼 1채널 행렬이라면 Scalar 자료형의 첫 번째 원소에 행렬 합 또는 평균이 저장됩니다. 입력 행렬이 3채널 컬러 영상이라면 Scalar 자료형의 처음 세 원소에 각각 파란색, 녹색, 빨간색 성분의 합 또는 평균이 저장됩니다.

다음은 그레이스케일 레나 영상에 대하여 모든 픽셀 값의 합과 평균을 구하는 예제 코드입니다.

Mat img = imread("lenna.bmp", IMREAD_GRAYSCALE);
 
cout << "Sum: " << (int)sum(img)[0] << endl;
cout << "Mean: " << (int)mean(img)[0] << endl;

앞 예제 코드에서 sum(src)Scalar 자료형을 반환합니다. 그리고 Scalar 자료형에서 첫 번째 원소 값을 참조하기 위해 sum(src) 코드 뒤에 [0]을 추가로 붙여서 코드를 작성했습니다. 앞 예제 코드를 실행하면 콘솔 창에 다음 문자열이 출력됩니다.

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