#include "stdafx.h"
#include "stdio.h"
#include "cv.h"
#include "cxcore.h"
#include "highgui.h"
IplImage* DrawHistogram(CvHistogram* hist , float scaleX = 1, float scaleY = 1)
{
float histMax = 0;
cvGetMinMaxHistValue(hist , 0 ,&histMax ,0 ,0);
IplImage* imgHist = cvCreateImage(cvSize(256*scaleX , 64*scaleY));
cvZero(imgHist);
for(int i=0;i<255;i++)
{
float histValue = cvQueryHistValue_1D( hist, i);
float nextValue = cvQueryHistValue_1D( hist, i+1);
CvPoint pt1 = cvPoint(i*scaleX , 64*scaleY);
CvPoint pt2 = cvPoint((i+1)*scaleX , 64*scaleY);
CvPoint pt3 = cvPoint((i+1)*scaleX , 64*scaleY - (nextValue/histMax)*64*scaleY);
CvPoint pt4 = cvPoint( i*scaleX , 64*scaleY - (nextValue/histMax)*64*scaleY);
int numPts = 5;
CvPoint pts[5];
pts[0] = pt1;
pts[1] = pt2;
pts[2] = pt3;
pts[3] = pt4;
pts[4] = pt1;
cvFillConvexPoly(imgHist , pts , numPts , cvScalar(255));
}
return imgHist;
}
int main(int argc, _TCHAR* argv[])
{
IplImage* src = cvLoadImage("E:\lena.jpg");
cvNamedWindow("src");
cvShowImage("src", src);
int dims = 1;
int size = 256;
float range[] = {0,255};
float* ranges[] = {range};
CvHistogram* hist;
hist = cvCreateHist(dims , &size , CV_HIST_ARRAY , ranges , 1);
cvClearHist(hist);
IplImage* imgRed = cvCreateImage(cvGetSize(src) , 8 ,1);
IplImage* imgGreen = cvCreateImage(cvGetSize(src) , 8 ,1);
IplImage* imgBlue = cvCreateImage(cvGetSize(src) , 8 ,1);
cvSplit(src , imgBlue , imgGreen , imgRed , NULL);
cvCalcHist(&imgBlue , hist , 0 , 0 );
IplImage* histBlue = DrawHistogram(hist);
cvClearHist(hist);
cvCalcHist(&imgGreen , hist , 0 , 0 );
IplImage* histGreen = DrawHistogram(hist);
cvClearHist(hist);
cvCalcHist(&imgRed , hist , 0 , 0 );
IplImage* histRed = DrawHistogram(hist);
cvClearHist(hist);
cvNamedWindow("B");
cvNamedWindow("G");
cvNamedWindow("R");
cvShowImage("B" , histBlue);
cvShowImage("G" , histGreen);
cvShowImage("R" , histRed);
cvWaitKey(0);
return 0;
}
IplImage imgHist = cvCreateImage(cvSize(256scaleX , 64*scaleY));
这里的问题
IplImage* cvCreateImage( CvSize size, int depth, int channels );
这个函数需要3个参数
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。