opencv学习(二)计算图像的直方图和表示为柱状图
来源:互联网 发布:网络评卷系统 编辑:程序博客网 时间:2024/06/14 21:54
1.直方图:直方图是一个简单的表,它给出了一幅图像或者一组图像中拥有给定数值的像素数量,因此,灰度图像的直方图有256个条目(或称为容器),0号容器给出像素值为0的像素个数、1号容器给出……;对直方图的所有项求和会得到像素的总数;直方图也可以归一化,归一化后所有项的和为1,每一项就成为了比例。
2.
//计算图像的直方图和表示为柱状图#include<opencv2\opencv.hpp>#include<iostream>using namespace cv;using namespace std;class Histogram1D{private: int histSize[1]; //直方图项的数量 float hranges[2]; //像素的最大值和最小值 const float* ranges[1]; int channels[1]; //仅用到一个通道public: Histogram1D(){ //准备1D直方图的参数 histSize[0] = 256; hranges[0] = 0.0; hranges[1] = 255.0; ranges[0] = hranges; channels[0] = 0; //默认情况考察0号通道 } MatND getHistogram(const Mat image){ MatND hist; calcHist(&image, 1, channels, Mat(), hist, 1, histSize, ranges); return hist; } Mat getHistogramImage(const Mat &image){ MatND hist = getHistogram(image); //首先计算直方图 double maxVal = 0; double minVal = 0; minMaxLoc(hist, &minVal, &maxVal, 0, 0); Mat histImg(histSize[0], histSize[0], CV_8U, Scalar(255)); int hpt = static_cast<int>(0.9*histSize[0]); for (int h = 0; h < histSize[0]; h++){ float binVal = hist.at<float>(h); int intensity = static_cast<int>(binVal*hpt/maxVal); line(histImg, Point(h, histSize[0]), Point(h, histSize[0] - intensity), Scalar::all(0)); } return histImg; }};int main(){ /*Mat image = imread("lifehappy.png",0); Histogram1D h; MatND histo = h.getHistogram(image);//计算直方图 for (int i = 0; i < 256; i++){ cout << "Value" << i << "=" << histo.at<float>(i) << endl; } waitKey(20150901); system("pause"); return 0;*/ Mat image = imread("lifehappy.png",0); Histogram1D h; namedWindow("Histogram"); imshow("Histogram",h.getHistogramImage(image)); system("pause"); return 0;}
阅读全文
0 0
- opencv学习(二)计算图像的直方图和表示为柱状图
- OpenCV 学习(计算图像的直方图)
- 有关opencv的学习(9)—计算图像直方图
- opencv学习之(五)-直方图计算和绘制图像直方图
- opencv学习之(五)-直方图计算和绘制图像直方图
- opencv学习笔记第四章 计算图像的直方图
- OpenCV学习笔记(五):计算图像直方图
- Opencv学习之 计算图像直方图
- Opencv---计算图像直方图方差和均值
- OpenCV计算和显示图像直方图
- OpenCV【4】---calcHist 计算图像的直方图
- opencv图像直方图的计算及绘制
- OpenCV入门(二十一)-- 绘制彩色图像的直方图
- OpenCV中关于求算图像的直方图(二)
- 我的OpenCV学习笔记(13):计算直方图,利用查找表拉伸直方图,直方图均衡
- calcHist()计算图像直方图opencv
- OpenCV之图像直方图计算
- OpenCV学习之图像的直方图
- vnc操作使用指南----开启多个VNCserver
- RN iOS网络是否连接bug
- 小程序-广告轮播/控制属性
- Makefile 使用总结
- js如何用面向对象的思路去编写一个程序
- opencv学习(二)计算图像的直方图和表示为柱状图
- Debian下安装Typora
- 指定状态过滤
- PHP使用header设置浏览器缓存
- 17110102_Windows系统下WebLogicServer12cR2安装详解
- iPhone手机浏览器运行嵌入页面的iframe时候会撑全屏,页面在安卓手机上正常,解决办法
- 让VirtualBox虚拟机实现开机自动后台运行
- ros下使用hokuyo
- 6.2-(1)