그림 10-8의 컬러 히스토그램 평활화 방법을 실제 영상에 적용한 예제 코드를 코드 10-4에 나타냈습니다. 코드 10-4에 나타난 coloreq 예제 프로그램은 pepper.bmp 영상에 대하여 컬러 히스토그램 평활화를 수행하고 그 결과를 화면에 나타냅니다. 코드 10-4에 나타난 소스 코드 파일과 사용된 영상 파일은 내려받은 예제 파일 중 ch10/coloreq 프로젝트에서 확인할 수 있습니다.
코드 10-4 컬러 영상의 히스토그램 평활화 예제 [ch10/coloreq]
01 #include "opencv2/opencv.hpp" 02 #include <iostream> 03 04 using namespace cv; 05 using namespace std; 06 07 int main(void) 08 { 09 Mat src = imread("pepper.bmp", IMREAD_COLOR); 10 11 if (src.empty()) { 12 cerr << "Image load failed!" << endl; 13 return -1; 14 } 15 16 Mat src_ycrcb; 17 cvtColor(src, src_ycrcb, COLOR_BGR2YCrCb); 18 19 vector<Mat> ycrcb_planes; 20 split(src_ycrcb, ycrcb_planes); 21 22 equalizeHist(ycrcb_planes[0], ycrcb_planes[0]); // Y channel 23 24 Mat dst_ycrcb; 25 merge(ycrcb_planes, dst_ycrcb); 26 27 Mat dst; 28 cvtColor(dst_ycrcb, dst, COLOR_YCrCb2BGR); 29 30 imshow("src", src); 31 imshow("dst", dst); 32 33 waitKey(0); 34 return 0; 35 }