Xcode histogram图像显示测试

来源:互联网 发布:讲课直播软件 编辑:程序博客网 时间:2024/05/17 01:02

#include <iostream>

#include <cv.h>

#include <highgui.h>

#include <string.h>


int main()

{

   int hist_size=255;

   float range_0[]={0,256};

   float *ranges[]={range_0};

   int i,bin_w;

   float max_value=0,min_value=0;

   int min_idx=0,max_idx=0;

   double mean=0,variance=0;

    

   IplImage *pImage=NULL;

   IplImage *pImgGray=NULL;

    IplImage *img=cvLoadImage("/Users/guofeng/Documents/histogram/test.bmp",1);

    pImage=cvCloneImage(img);

    cvNamedWindow("original");

   cvShowImage("original", pImage);

    pImgGray=cvCreateImage(cvGetSize(pImage),IPL_DEPTH_8U, 1);

   cvCvtColor(pImage, pImgGray, CV_BGR2GRAY);

    

   CvRect rect=cvRect(0,0,512,512);

   cvSetImageROI(pImgGray, rect);

   IplImage *histImage=cvCreateImage(cvSize(320,320),8, 1);

   CvHistogram *hist=cvCreateHist(1, &hist_size,CV_HIST_ARRAY,ranges,1);

   cvCalcHist(&pImgGray, hist);

   cvGetMinMaxHistValue(hist, &min_value, &max_value,&min_idx,&max_idx);

   cvScale(hist->bins,hist->bins,((double)histImage->height/max_value),0);

   cvSet(histImage,cvScalarAll(255),0);

    bin_w=cvRound((double)histImage->width/hist_size);

   for(i=0;i<hist_size;i++)

    {

       cvRectangle(histImage, cvPoint(i*bin_w,histImage->height), cvPoint((i+1)*bin_w, histImage->height-cvRound(cvGetReal1D(hist->bins, i))),cvScalarAll(0),-1,8,0);

       float *bins=cvGetHistValue_1D(hist, i);

        mean+=bins[0];

    }

    mean/=hist_size;

   for(i=0;i<hist_size;i++)

    {

       float *bins=cvGetHistValue_1D(hist, i);

        variance+=pow((bins[0]-mean),2);

    }

    variance/=hist_size;

    

    cvNamedWindow("gray");

   cvShowImage("gray", pImgGray);

    cvNamedWindow("histogram");

   cvShowImage("histogram", histImage);

    

   CvFont *pfont=newCvFont;

    cvInitFont(pfont,CV_FONT_HERSHEY_SIMPLEX, 1,1,0,0);

    char Result[]="histogram mean:";


    //Result+=str+"\n";

   cvPutText(histImage, Result, cvPoint(0,80), pfont,CV_RGB(255,255,0));

   cvShowImage("histogram", histImage);

    cvSaveImage("/Users/guofeng/Documents/histogram/histogram.jpg", histImage);

    cvWaitKey(0);

   cvReleaseImage(&pImage);

   cvReleaseImage(&pImgGray);

    cvReleaseImage(&img);

    cvDestroyAllWindows();

    

    

   return 0;

}

显示直方图:

0 0
原创粉丝点击