OpenCV中关于求算图像的直方图(二)
来源:互联网 发布:梁朝伟演技知乎 编辑:程序博客网 时间:2024/06/13 12:05
1:由于calhist()函数求得的直方图返回值也是一个一维或三维等等的矩阵,因此可以采用可视化的方式将结果显示出来;为此我们将计算和显示的功能封装到一个类中来实现:
class Histogram1D{private:int histSize[1]; //项的数量;保存了维数和分块的信息;float histRange[2]; //灰度最大值和最小值;const float *range[1]; //指针数组,int channels[1]; //通道数目;public:Histogram1D(){histSize[0] = 255;histRange[0] = 0;histRange[1] = 255;range[0] = histRange; //range[0]是一个指针,range就是指针的指针channels[0] = 0;}MatND getHistorgram(const Mat& image) //计算直方图数组{MatND hist;calcHist(&image,1,channels,Mat(),hist,1,histSize,range);return hist;}Mat GetHistoImage(const Mat &image); //直方图数组的show; };Mat Histogram1D::GetHistoImage(const Mat &image){MatND hist = getHistorgram(image);double maxVal=0;double minVal=0;minMaxLoc(hist,&minVal,&maxVal,0,0);int histSize=hist.rows;Mat histImage(histSize,histSize,CV_8U,Scalar(255));int hpt=static_cast<int>(0.9*histSize); for(int h=0;h<histSize;h++) { float binVal=hist.at<float>(h); int intensity=static_cast<int>(binVal*hpt/maxVal); line(histImage,Point(h,histSize),Point(h,histSize-intensity),Scalar::all(0)); } return histImage;}
然后在主函数中定义一个对象,就可以直接实现直方图的可视化了
int _tmain(int argc, _TCHAR* argv[]){Mat image = imread("meng.jpg",1);cvtColor(image,image,CV_RGB2GRAY);Histogram1D h;namedWindow("直方图");imshow("直方图",h.GetHistoImage(image));waitKey(0);return 0;}得到的结果:
但是需要注意的是,在显示的过程中用到了line函数,该函数的原型:
C: void cvLine(CvArr* img, CvPoint pt1, CvPoint pt2, CvScalar color, int thickness=1, int line_type=8, int shift=0 )第一个参数为需要划线的图像指针,第二第三为起始点终点,color表示画笔颜色;默认的坐标体系为:原点在window的左上角,向下为y轴正方向,向右为x轴正方向;
0 0
- OpenCV中关于求算图像的直方图(二)
- OpenCV中关于求算图像的直方图(一)
- OpenCV入门(二十一)-- 绘制彩色图像的直方图
- Opencv中图像的灰度直方图
- OpenCV 学习(计算图像的直方图)
- opencv中关于直方图的相关函数
- opencv中关于直方图的相关函数
- OpenCV-统计图像的直方图,绘制直方图
- 【OpenCV图像处理】十一、图像的直方图与相关处理(中)
- 【OpenCV】绘制图像的直方图
- OpenCV入门(二十)-- 彩色图像的直方图均衡化
- opencv学习(二)计算图像的直方图和表示为柱状图
- 有关opencv的学习(9)—计算图像直方图
- 关于OpenCV中rectangle函数的使用+统计直方图
- OpenCV-绘制图像的像素直方图-Histogram
- OpenCV基于直方图特征的图像搜索
- OpenCV基于直方图特征的图像搜索
- 用opencv创建图像的灰度直方图
- Linux awk 命令
- Android轻量级数据库的建立个基本的操作
- jquery ajax 不能用于下载文件
- zookeeper使用和原理探究(一)
- Swift基础(五):类和结构体
- OpenCV中关于求算图像的直方图(二)
- ProgressBar控件
- SnackBar 笔记(一)基本使用
- Java集合干货系列-集合总体大纲
- 第十五周实践项目阅读程序————5
- 关于Android studio中os文件导入失败的解决方式
- Expectation Maximization Algorithm---opencv2.4.11
- 有的放矢,Liferay进军数字体验市场
- HDU 1241 Oil Deposits (基础DFS 或者 BFS)