opencv android cvnamedwindow,opencv绘制直方图

opencv绘制直方图

(2012-05-07 19:11:10)

标签:

opencv

it

//

// 对单通道图像做直方图

//

#include "cv.h"

#include "highgui.h"

#include

#include

int main( int argc, char** argv )

{

IplImage *src = 0;

IplImage *histimg = 0;

CvHistogram *hist = 0;

int hdims = 50; // 划分HIST的个数,越高越精确

float hranges_arr[] = {0,255};

float* hranges = hranges_arr;

int bin_w;

float max_val;

int i;

if( argc != 2 || (src=cvLoadImage(argv[1], 0)) == NULL) // force to

gray image

return -1;

cvNamedWindow( "Histogram", 1 );

hist = cvCreateHist( 1, &hdims, CV_HIST_ARRAY,

&hranges, 1 ); // 计算直方图

histimg = cvCreateImage( cvSize(320,200), 8, 3 );

cvZero( histimg );

cvCalcHist( &src, hist, 0, 0 ); // 计算直方图

cvGetMinMaxHistValue( hist, 0, &max_val, 0, 0 ); //

只找最大值

cvConvertScale( hist->bins,

hist->bins, max_val ? 255. / max_val : 0., 0 ); //

缩放 bin 到区间 [0,255]

cvZero( histimg );

bin_w = histimg->width / hdims; // hdims: 条的个数,则

bin_w 为条的宽度

// 画直方图

for( i = 0; i < hdims; i++ )

{

double val = (

cvGetReal1D(hist->bins,i)*histimg->height/255

);

CvScalar color = CV_RGB(255,255,0);

//(hsv2rgb(i*180.f/hdims);

cvRectangle( histimg,

cvPoint(i*bin_w,histimg->height),

cvPoint((i+1)*bin_w,(int)(histimg->height -

val)),

color, 1, 8, 0 );

}

cvShowImage( "Histogram", histimg );

cvWaitKey(0);

cvDestroyWindow("Histogram");

cvReleaseImage( &src );

cvReleaseImage( &histimg );

cvReleaseHist ( &hist );

return 0;

}

分享:

a4c26d1e5885305701be709a3d33442f.png喜欢

0

a4c26d1e5885305701be709a3d33442f.png赠金笔

加载中,请稍候......

评论加载中,请稍候...

发评论

登录名: 密码: 找回密码 注册记住登录状态

昵   称:

评论并转载此博文

a4c26d1e5885305701be709a3d33442f.png

发评论

以上网友发言只代表其个人观点,不代表新浪网的观点或立场。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值