易网时代-编程资源站
Welcome
微信登录
编程资源
图片资源库
蚂蚁家优选
PDF转换器
软件资源
软件开发
、
小程序制作
、
系统集成与运维
、
空间租用
、
硬件开发
、
视频监控
、
技术咨询与支持
——联系电话:0311-88999002/88999003
首页
/
操作系统
/
Linux
/
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;
}
收藏该网址
版权所有©石家庄振强科技有限公司2024
冀ICP备08103738号-5
网站地图