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;}


           

再分享一下我老师大神的人工智能教程吧。零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到我们人工智能的队伍中来!https://blog.csdn.net/jiangjunshow

猜你喜欢

转载自blog.csdn.net/kahncc/article/details/87537494