Qt 5.3 下OpenCV 2.4.11 开发(7)单通道直方图绘制
来源:互联网 发布:淘宝美工详情页 编辑:程序博客网 时间:2024/05/22 03:06
函数中主要使用的 calcHist() 函数来统计一个直方图,直方图统计类的头文件和源文件,头文件代码如下:
#ifndef HISTOGRAM1D_H#define HISTOGRAM1D_H#include <opencv2/core/core.hpp>#include <opencv2/highgui/highgui.hpp>#include <opencv2/opencv.hpp>using namespace cv;using namespace std;class Histogram1D{public: Histogram1D(); MatND getHistogram(const Mat &source); Mat getHistogramImage(const Mat &source);private: int histSize[1]; //直方图项数 int channels[1]; //通道数量 float histMinMax[2]; //像素最小值最大值 const float* ranges[1]; //像素值范围};#endif // HISTOGRAM1D_H
#include "histogram1d.h"Histogram1D::Histogram1D(){ //1D参数初始化 histSize[0] = 256; histMinMax[0] = 0.0; histMinMax[1] = 255.0; ranges[0] = histMinMax; channels[0] = 0;}MatND Histogram1D::getHistogram(const Mat &source){ MatND Hist; calcHist(&source, 1, channels, Mat(), Hist, 1, histSize, ranges); return Hist;}Mat Histogram1D::getHistogramImage(const Mat &source){ MatND hist = getHistogram(source);//计算直方图 double maxVal = 0; double minVal = 0; minMaxLoc(hist, &minVal, &maxVal);//获取最大值和最小值 Mat histImg(histSize[0], histSize[0], CV_8U, Scalar(255));//用于显示直方图图像 int topPoint = static_cast<int>(0.9*histSize[0]); for ( int i = 0; i < histSize[0]; i ++ ) { float binVal = hist.at<float>(i); int intensity = static_cast<int>(binVal*topPoint/maxVal); line(histImg, Point(i, histSize[0]), Point(i, histSize[0]-intensity), Scalar::all(0)); } return histImg;}
main.cpp 代码段如下:
#include <QCoreApplication>#include <histogram1d.h>using namespace cv;using namespace std;int main(){ Mat src = imread("lena.jpg",0); Histogram1D Hg; Mat HistImg = Hg.getHistogramImage(src); namedWindow("HistImg", 0); imshow("HistImg", HistImg); waitKey(0); return 0;}
函数介绍:
void calcHist(const Mat* arrays, //输入的源图像 int narrays, //计算直方图数量const int* channels, //通道数量InputArray mask, //掩码 OutputArray hist, //返回的直方图int dims, //维数const int* histSize, //直方图项数const float** ranges, //像素值范围 bool uniform = true,//bool accumulate = false );//2、MatND 类型是一个通用类,可以操作N维矩阵。他也定义了一维、二维、三维矩阵的 at 方法。
0 0
- Qt 5.3 下OpenCV 2.4.11 开发(7)单通道直方图绘制
- OpenCV 绘制单通道图片的直方图
- opencv 绘制单通道图片的直方图
- OpenCV之单通道图像的直方图绘制
- Qt 5.3 下OpenCV 2.4.11 开发(8)查表法直方图修改图像
- Qt 5.3 下OpenCV 2.4.11 开发(9)直方图均衡化
- opencv 绘制三通道的直方图
- OpenCV学习笔记(12):单通道图像直方图
- OpenCV绘制直方图,B G R三通道的
- OpenCV:绘制图像的BGR三通道直方图
- 计算并绘制单通道图像的直方图
- 直方图 单通道 多通道
- opencv色彩空间转换,提取单通道,直方图等示例
- cvEqualizeHist() 直方图均衡化(单通道)
- 单通道直方图
- 单通道直方图
- OpenCV--绘制直方图&直方图均衡
- Qt 5.3 下OpenCV 2.4.11 开发 目录
- linux登陆之后显示bash-3.00$
- ArcGIS Server 扩展-SOE系列(一)
- 博文转载
- 作为项目经理应该跟项目组成员保持上下级关系还是打成一片?
- 获取当前路径
- Qt 5.3 下OpenCV 2.4.11 开发(7)单通道直方图绘制
- muduo网络库预备知识点
- 8数码问题的C++解决方案
- linux oracle11g 安装 网络配置向导错误
- Java File类学习笔记3:自定义一个类,读取文本内容到字符串
- 判断填写的邮箱里是否有“@”
- 企业发展各阶段对邮件系统的要求
- SOLDIERS_Java_C_POJ1723
- Android Intent 传值