資源簡介
采用VC++和opencv對圖像進行直方圖均衡化,并顯示圖像及直方圖,帶有圖片,能成功運行

代碼片段和文件信息
#include?
#include?
#include?
#include?
#define?HDIM??256
int?main(int?argcchar**?argv)
{
IplImage?*dst=0*src=0;
CvHistogram?*histogram;
CvHistogram?*HistEqualization;
IplImage?*histOriginal;//原圖像的直方圖
IplImage?*HistEquAfter;//均衡化后直方圖
float?HistogramRange1[2]={0255};
float?*HistogramRange[1]={&HistogramRange1[0]};
int?n=HDIM;
double?nn0[HDIM];
int?srcnn00[HDIM];
uchar?T0[HDIM];
CvMat?*T_mat0;
int?i=0;
int?sum?=?0;?//sum?of?pixels?of?the?source?image
double?val0=0;
int?val1=0;
if((src=cvLoadImage(“4.jpg“0))?==?NULL)??//?force?to?gray?image
{
printf(“Read?Image?Error!“);
return?-1;
}
//原圖像的直方圖
histOriginal?=?cvCreateImage(cvSize(300400)83);
histOriginal->origin=1;
histogram?=?cvCreateHist(1&nCV_HIST_ARRAYHistogramRange1);?
cvCalcHist(&srchistogram00);?
//?Compute?intensity?transformation
sum?=?src->height?*?src->width;
for(?i?=?0;?i? {
val0?=?val0?+?cvGetReal1D?(histogram->bins?i);
nn0[i]=val0;
T0[i]?=?(uchar)?(255*nn0[i]/sum);?//?range?is?[0255]
srcnn00[i]=(int)(nn0[i]*255/sum);
cvLine(histOriginalcvPoint(i0)cvPoint(i(int)(cvQueryHistValue_1D(histogrami)/3))CV_RGB(127127127));
}
//?直方圖均衡化
dst?=?cvCloneImage(src);
T_mat0?=?cvCreateMatHeader(1256CV_8UC1);
cvSetData(T_mat0T0src->width?);
cvLUT(?src?dst?T_mat0);
//均衡化后的直方圖
HistEquAfter?=?cvCreateImage(cvSize(300400)83);
HistEquAfter->origin=1;
HistEqualization?=?cvCreateHist(1&nCV_HIST_ARRAYHistogramRange1);?
cvCalcHist(&dstHistEqualization00);
for?(i=0;i {
cvLine(HistEquAftercvPoint(i0)cvPoint(i(int)(cvQueryHistValue_1D(HistEqualizationi)/3))CV_RGB(127127127));
}
cvNamedWindow(?“source“?1?);
cvNamedWindow(?“HistEquImage“?1?);
cvNamedWindow(?“S_Histogram“?1?);
cvNamedWindow(?“HistEqualization“?1?);
cvShowImage(?“source“?src?);//原圖像
cvShowImage(?“HistEquImage“?dst?);//均衡化后圖像
cvShowImage(“S_Histogram“histOriginal);//原圖像直方圖
cvShowImage(“HistEqualization“HistEquAfter);//均衡化后直方圖
cvWaitKey(-1);
cvReleaseImage(?&src?);
cvReleaseImage(?&dst?);
cvReleaseImage(&histOriginal);
cvReleaseImage(&HistEquAfter);
cvReleaseHist?(?&histogram);
cvReleaseHist(&HistEqualization);
cvDestroyWindow(“source“);
cvDestroyWindow(“HistEquImage“);
cvDestroyWindow(“S_Histogram“);
cvDestroyWindow(“HistEqualization“);
return?0;
}
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件??????49661??2011-06-03?10:17??histSP\4.jpg
?????文件?????192571??2011-06-17?10:10??histSP\Debug\histSP.exe
?????文件?????208040??2011-06-17?10:10??histSP\Debug\histSP.ilk
?????文件??????20086??2011-06-17?10:10??histSP\Debug\histSP.obj
?????文件????4117988??2011-06-17?00:43??histSP\Debug\histSP.pch
?????文件?????467968??2011-06-17?10:10??histSP\Debug\histSP.pdb
?????文件?????156672??2011-06-17?10:10??histSP\Debug\vc60.idb
?????文件??????94208??2011-06-17?10:08??histSP\Debug\vc60.pdb
?????文件????????249??2011-06-16?23:25??histSP\histSP.asp
?????文件???????2561??2011-06-17?10:08??histSP\histSP.cpp
?????文件???????3486??2011-06-17?10:10??histSP\histSP.dsp
?????文件????????535??2011-06-17?10:10??histSP\histSP.dsw
?????文件??????41984??2011-06-17?10:10??histSP\histSP.ncb
?????文件??????48640??2011-06-17?10:10??histSP\histSP.opt
?????文件????????801??2011-06-17?10:10??histSP\histSP.plg
?????目錄??????????0??2011-06-17?10:10??histSP\Debug
?????目錄??????????0??2011-06-17?10:10??histSP
-----------?---------??----------?-----??----
??????????????5405450????????????????????17
評論
共有 條評論