opencv学习笔记1—equalizeHist 函数(直方图均衡化)
2017-08-11 15:02
633 查看
//举个代码例子
#include "opencv2/highgui/highgui.hpp" #include "opencv2/imgproc/imgproc.hpp" #include <iostream> #include <stdio.h> using namespace cv; using namespace std; /** @function main */ int main( int argc, char** argv ) { Mat src, dst; char* source_window = "Source image"; char* equalized_window = "Equalized Image"; // 加载源图像 src = imread( argv[1], 1 ); if( !src.data ) { cout<<"Usage: ./Histogram_Demo <path_to_image>"<<endl; return -1;} /// 转为灰度图 cvtColor( src, src, CV_BGR2GRAY ); /// 应用直方图均衡化 equalizeHist( src, dst ); /// 显示结果 namedWindow( source_window, CV_WINDOW_AUTOSIZE ); namedWindow( equalized_window, CV_WINDOW_AUTOSIZE ); imshow( source_window, src ); imshow( equalized_window, dst ); /// 等待用户按键退出程序 waitKey(0); return 0; }
说明
声明原图和目标图以及窗体名称:Mat src, dst; char* source_window = "Source image"; char* equalized_window = "Equalized Image";
加载源图像:
src = imread( argv[1], 1 ); if( !src.data ) { cout<<"Usage: ./Histogram_Demo <path_to_image>"<<endl; return -1;}
转为灰度图:
cvtColor( src, src, CV_BGR2GRAY );
利用函数 equalizeHist 对上面灰度图做直方图均衡化:
equalizeHist( src, dst );
可以看到, 这个操作的参数只有源图像和目标 (均衡化后) 图像.
显示这两个图像 (源图像和均衡化后图像) :
namedWindow( source_window, CV_WINDOW_AUTOSIZE ); namedWindow( equalized_window, CV_WINDOW_AUTOSIZE ); imshow( source_window, src ); imshow( equalized_window, dst );
等待用户案件退出程序
waitKey(0); return 0;
函数功能:直方图均衡化,该函数能归一化图像亮度和增强对比度
为了更好地观察直方图均衡化的效果, 我们使用一张对比度不强的图片作为源图像输入, 如下图:
它的直方图为:
注意到像素大多集中在直方图中间的强度上.
使用例程进行均衡化后, 我们得到下面的结果:
这幅图片显然对比度更强. 再验证一下均衡化后图片的直方图:
注意到现在像素在整个强度范围内均衡分布.
#include <opencv2/imgproc/imgproc.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <iostream>
#include <stdio.h>
using namespace cv;
using namespace std;
int main()
{
Mat src = imread("1.jpg", 1);
cvtColor(src, src, CV_BGR2GRAY);
Mat dst;
equalizeHist(src, dst);
imshow("shiyan", dst);
waitKey(0);
return 0;
}
相关文章推荐
- opencv学习(三十六)图像直方图均衡化equalizeHist
- opencv3.0 函数学习 3——equalizeHist 直方图均衡化
- OpenCV学习笔记_直方图均衡化cvEqualizeHist
- opencv_tutorial_code学习——equalizeHist直方图均衡化
- opencv学习笔记-常用函数二
- opencv学习笔记:特征点匹配函数使用注意
- 基础学习笔记之opencv(24):imwrite函数的使用
- 【OpenCV学习笔记】之六 手写图像旋转函数---万丈高楼平地起
- 【OpenCV学习笔记】【函数学习】五(颜色空间转换cvCvtColor()函数)
- 【OpenCV学习笔记】【函数学习】十六(Rect参数介绍)
- 【OpenCV学习笔记】【函数学习】十七(imread()函数)
- OpenCv学习笔记(六)----图像空间缩减,OpenCv中的计时函数和OpenCv中操作图像单个像素点的方法
- 【OpenCV学习笔记】【函数学习】九(RGB空间各通道分离)--Mat类型
- 【OpenCV学习笔记】【函数学习】十二(cvCanny()函数及其阈值设置的比较)
- Opencv学习笔记三-直方图点运算(直方图基本点算子、直方图正规化、直方图均衡化)
- OpenCV学习笔记(三):将图像显示在MFC控件上并做直方图均衡化处理
- 【OpenCV学习笔记】【函数学习】十八(保存图片)
- SetImageROI函数设置ROI区域的作用及用法————学习OpenCV笔记(三)
- Python OpenCV学习笔记之:图像直方图均衡化
- OpenCV学习笔记9 常用的OpenCV函数速查