Xcode histogram图像显示测试

#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=new CvFont;

    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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值