前面已经发过直方图均衡的程序,但是是1.0的老版本,里面用的是一些老的数据结构和函数,现在用2.3版的重新实现一下。
这个程序就是简单的直方图均衡化,不涉及绘制直方图。
代码很简单直观,用到函数:equalizeHist
代码:
// 043 直方图均衡化 2.3.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include "opencv2/highgui/highgui.hpp"
#include "opencv2/imgproc/imgproc.hpp"
#include
#include
using namespace cv;
using namespace std;
int main( int argc, char** argv )
{
Mat src, dst;
char* source_window = "Source image";
char* equalized_window = "Equalized Image";
src =
imread( "chicky_512.png");
if( !src.data )
{
cout<
"<
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;
}
运行结果: