반응형
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 |