히스토그램 코드로 확인
2020. 9. 28. 22:07ㆍOpen CV
OpenCV의 히스토그램에 대한 설명은 지난 글에서 작성이 되었는데,
이번에는 간단히 코드로 직접 확인을 해보자.
각자 사진을 1개씩 준비해 주시고~ cvLoadImage의 경로를 사진이 위치한 경로로 바꿔 주세요.
#include <opencv\cv.h>
#include <opencv\highgui.h>
void main () {
IplImage*src_img=0;
IplImage*imgHistogram=0;
int bins = 256;
int sizes[] = {bins};
float max_value = 0, min_value = 0;
//ranges-grayscale 0 to 255
float xranges[] = {0, 255};
float*ranges[] = {xranges};
src_img=cvLoadImage("C:/Users/Documents/Visual Studio 2010/Projects/openCV test/openCV test/images/tx.jpg",-1);
imgHistogram = cvCreateImage( cvGetSize(src_img), IPL_DEPTH_8U, 1);
cvNamedWindow("Original", CV_WINDOW_AUTOSIZE);
cvNamedWindow("Histo", CV_WINDOW_AUTOSIZE);
CvHistogram*histo = cvCreateHist( 1, sizes, CV_HIST_ARRAY, ranges, 1);
cvCalcHist(&src_img, 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", src_img);
cvShowImage("Histo", imgHistogram);
cvWaitKey();
cvReleaseImage(&src_img);
cvReleaseImage(&imgHistogram);
}
이렇게 되면 결과 값은 아래와 같이 나오는데, 원본 이미지와 함께 팝업이 뜰겁니다.
'Open CV' 카테고리의 다른 글
단일영상에서의 산술연산 (0) | 2020.09.28 |
---|---|
ROI(관심 영역) 설정과 영상 정보 출력 (0) | 2020.09.28 |
컬러 영상 출력해보기(channel, origin, width, height, widthStep, depth, imageSize, imageData) (0) | 2020.09.28 |
히스토그램 (0) | 2020.09.28 |
컬러 영상 (0) | 2020.09.28 |