打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
直方图
userphoto

2014.07.25

关注

class Histogram1D

{

public:

Histogram1D()

{

histSize[0]=256;

hranges[0]=0.0;

hranges[1]=255.0;

ranges[0]=hranges;

channels[0]=0;

}

MatND getHistogram(const Mat &image)

{

MatND hist;

calcHist(&image,1,channels,Mat(),hist,1,histSize,ranges);

return hist;

}

protected:

private:

int histSize[1];

float hranges[2];

const float* ranges[1];

int channels[1];

};



Mat drawhist(MatND hist)

{

double maxvalue=0;

double minvalue=0;

minMaxLoc(hist,&minvalue,&maxvalue,0,0);

Mat histimg(256,256,CV_8U,Scalar(255));

int hpt=static_cast<int>(0.9*256);

for (int h=0;h<256;h++)

{

float binval=hist.at<float>(h);

int intensity=static_cast<int>(binval*hpt/maxvalue);

line(histimg,Point(h,256),Point(h,256-intensity),Scalar(0));

}

return histimg;

}


int _tmain(int argc, _TCHAR* argv[])

{

Mat src=imread("D:\\image\\img2\\lena.jpg",0);

if (!src.data)

{

cout<<"can not find picture"<<endl;

}

//int thresh=otsu(src);

Mat img;

//threshold(src,img,thresh,255,CV_THRESH_BINARY);

//calchist(src);

Histogram1D h;

MatND hist=h.getHistogram(src);

Mat histimg=drawhist(hist);

//for (int i=0;i<256;i++)

//{

// cout<<"value"<<i<<"="<<hist.at<float>(i)<<endl;

//}

namedWindow("win1");

imshow("win1",histimg);

waitKey(0);

return 0;

}

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
Opencv图像识别从零到精通(8)
OpenCV成长之路(4):图像直方图 - 博客 - 伯乐在线
反向投影(BackProjection)
OpenCV-绘制简易直方图DrawHistImg
Opencv学习笔记(十一)基于CAMshift算法的物体跟踪实现
【从零学习OpenCV 4】直方图匹配
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服