반응형
void main()
{
	IplImage* src_image = 0;
    IplImage* imgHistogram = 0;
    
    int bins = 256;
    int sizes[] = {bins};
    
    float max_value = 0, min_value = 0;
    
    float xranges[] = {0, 255};
    float *ranges[] = {xranges};
    
    src_image = cvLoadImage("c:/opencv/...../lena.jpg", 0);
    imgHistogram = cvCreateImage( cvGetSize(src_image), IPL_DEPTH_8U, 1);
    
    cvNamedWindow("Original Image", CV_WINDOW_AUTOSIZE);
    cvNamedWindow("Histogram", CV_WINDOW_AUTOSIZE);
    
    CvHistogram *histo = cvCreateHist(1, sizes, CV_HIST_ARRAY, ranges, 1);
    cvCalcHist( &src_image, histo);
    
    cvGetMinMaxHistValue( histo, &min_value, &max_value);
    cvConvertScale( histo->bins, histo->bins, ((double)imgHistogram->height)/max_value, 0);
    cvSet(imgHistogram, cvScalarAll(255), 0);
    
    int bandwidth = cvRound((double)imgHistogram->width/bins);
    for(int i=0; i<bins; i++)
    {
    	int val = cvRound(cvGetReal1D(histo->bins, i));
        cvRectangle(imgHistogram, cvPoint(i*bandwidth, imgHistogram->height), 
        		cvPoint((i+1)*bandwidth, imgHistogram->height-val), cvScalarAll(0), 1);
    }
    
    cvShowImage("Original Image", src_image);
    cvShowImage("Histogram", imgHistogram);
    
    cvWaitKey();
    cvReleaseImage(&src_image);
    cvReleaseImage(&imgHistogram);
}

 

 

 

출처: opencv를 이용한 영상처리 (임동훈 지음)

반응형

'OpenCV > Histogram' 카테고리의 다른 글

히스토그램을 나타내기 위한 OpenCV 함수들  (0) 2020.12.29
히스토그램  (0) 2020.12.29

+ Recent posts