سلام
من مسافرت بودم اولی از تصویر هیستوگرام میگیره و دومی هیستوگرام رو نمایش میده
//returns one dimensioanl histogram from gray scale image
void bhGet1DHistogram(CvArr* srcArr ,CvHistogram** hist, int size, IplImage* mask)
{
IplImage* srcImg,stub;
srcImg = cvGetImage(srcArr,&stub);
int sizes[] = {size};
float ranges1[] = {0,size};
float* ranges[] = {ranges1};
*hist = cvCreateHist(1,sizes,CV_HIST_ARRAY,ranges,1);
if (mask != 0)
cvCalcHist(&srcImg,*hist,0,mask);
else cvCalcHist(&srcImg,*hist,0);
}
// display one dimensional histogram
void bhShow1DHistogram( CvHistogram* hist,IplImage** histImage,int height)
{
*histImage = cvCreateImage(cvSize(hist->mat.dim[0].size,height),8,1);
cvZero(*histImage);
float min_value, max_value;
cvGetMinMaxHistValue(hist,&min_value,&max_value);
float* pHist = hist->mat.data.fl;
for (int j=0; j < hist->mat.dim[0].size; j++)
{
int value = pHist[j] / max_value * height;
cvLine(*histImage,cvPoint(j,height),cvPoint(j,heig ht- value),cvScalarAll(255)) ;
}
}
موفق باشید