• opencv绘制灰度直方图


    代码之一:

    #include <cv.h>
    #include <highgui.h>
    #pragma comment( lib, "cv.lib" )
    #pragma comment( lib, "cxcore.lib" )
    #pragma comment( lib, "highgui.lib" )
    int main()
    {
             IplImage* src=cvLoadImage("lena.jpg",0);
             int width=src->width;
             int height=src->height;
             int step=src->widthStep;
             uchar* data=(uchar *)src->imageData;
             int hist[256]={0};
             for(int i=0;i<height;i++)
             {
                       for(int j=0;j<width;j++)
                       {
                                hist[data[i*step+j]]++;
                       }
             }
             int max=0;
             for(i=0;i<256;i++)
             {
                       if(hist[i]>max)
                       {
                                max=hist[i];
                       }
             }
             IplImage* dst=cvCreateImage(cvSize(400,300),8,3);
             cvSet(dst,cvScalarAll(255),0);
             double bin_width=(double)dst->width/256;
             double bin_unith=(double)dst->height/max;
             for(i=0;i<256;i++)
             {
                       CvPoint p0=cvPoint(i*bin_width,dst->height);
                       CvPoint p1=cvPoint((i+1)*bin_width,dst->height-hist[i]*bin_unith);
                       cvRectangle(dst,p0,p1,cvScalar(0,255),-1,8,0);
             }
             cvNamedWindow("src",1);
             cvShowImage("src",src);
             cvNamedWindow("dst",1);
             cvShowImage("dst",dst);
             cvWaitKey(0);
             cvDestroyAllWindows();
             cvReleaseImage(&src);
             cvReleaseImage(&dst);
             return 0;
    }

    代码之二 :

    #include <cv.h>
    #include <highgui.h>
    #pragma comment( lib, "cv.lib" )
    #pragma comment( lib, "cxcore.lib" )
    #pragma comment( lib, "highgui.lib" )
    int main()
    {
             IplImage* src=cvLoadImage("lena.jpg",0);
             int size=256;
             float range[]={0,255};
             float* ranges[]={range};
             CvHistogram* hist=cvCreateHist(1,&size,CV_HIST_ARRAY,ranges,1);
             cvCalcHist(&src,hist,0,NULL);
             float max=0;
             cvGetMinMaxHistValue(hist,NULL,&max,NULL,NULL);
             IplImage* dst=cvCreateImage(cvSize(400,300),8,3);
             cvSet(dst,cvScalarAll(255),0);
             double bin_width=(double)dst->width/size;
             double bin_unith=(double)dst->height/max;
             for(int i=0;i<size;i++)
             {
                       CvPoint p0=cvPoint(i*bin_width,dst->height);
                       CvPoint p1=cvPoint((i+1)*bin_width,dst->height-cvGetReal1D(hist->bins,i)*bin_unith);
                       cvRectangle(dst,p0,p1,cvScalar(0,255),-1,8,0);
             }
             cvNamedWindow("src",1);
             cvShowImage("src",src);
             cvNamedWindow("dst",1);
             cvShowImage("dst",dst);
             cvWaitKey(0);
             cvDestroyAllWindows();
             cvReleaseImage(&src);
             cvReleaseImage(&dst);
             return 0;
    }

    from: http://blog.csdn.net/abcjennifer/article/details/7315650

  • 相关阅读:
    NFC
    精品收藏:GitHub人工智能AI开源项目
    typedef的用法,C语言typedef详解
    “此人不存在”
    视频换脸-Deepfakes代码解读和训练说明
    Linux下__attribute__((visibility ("default")))的使用
    piao
    高通开源android源码下载
    iOpenWorskSDK下载和答疑贴
    解构领域驱动设计(三):领域驱动设计
  • 原文地址:https://www.cnblogs.com/GarfieldEr007/p/5374051.html
Copyright © 2020-2023  润新知