zoukankan      html  css  js  c++  java
  • OpenCV && C++ 06

    直方图均衡化是图像处理领域中利用图像直方图对对比度进行调整的方法。直方图均衡化处理的“中心思想”是把原始图像的灰度直方图从比较集中的某个灰度区间变成在全部灰度范围内的均匀分布。

    这种方法对于背景和前景都太亮或者太暗的图像非常有用,这种方法的一个主要优势是它是一个是可逆操作,如果已知均衡化函数,那么就可以恢复原始的直方图,并且计算量也不大。这种方法的一个缺点是它对处理的数据不加选择,它可能会增加背景噪声的对比度并且降低有用信号的对比度。

    Code

    /*
    作者:郑大峰
    时间:2019年09月20日
    环境:OpenCV 4.1.1 + VS2017
    内容:Histogram Equalization of a Grayscale image with OpenCV
    */
    
    #include "pch.h"
    #include <iostream>
    #include <opencv2/opencv.hpp>
    
    using namespace std;
    using namespace cv;
    
    int main()
    {
    	Mat image = imread("Unequalized_Hawkes_Bay_NZ.jpg");
    
    	if (image.empty())
    	{
    		cout << "Could not open or find the image" << endl;
    		cin.get();
    		return -1;
    	}
    
    	//change the color image to grayscale image
    	cvtColor(image, image, COLOR_BGR2GRAY);
    
    	//equalize the histogram
    	Mat hist_equalized_image;
    	equalizeHist(image, hist_equalized_image);
    
    	//Define names of windows
    	String windowNameOfOriginalImage = "Original Image";
    	String windowNameOfHistogramEqualized = "Histogram Equalized Image";
    
    	// Create windows with the above names
    	namedWindow(windowNameOfOriginalImage, WINDOW_NORMAL);
    	namedWindow(windowNameOfHistogramEqualized, WINDOW_NORMAL);
    
    	// Show images inside created windows.
    	imshow(windowNameOfOriginalImage, image);
    	imshow(windowNameOfHistogramEqualized, hist_equalized_image);
    
    	waitKey(0); // Wait for any key stroke
    
    	destroyAllWindows(); //destroy all open windows
    
    	return 0;
    }
    

    Result

  • 相关阅读:
    动态调用WCF服务
    矩阵的坐标变换(转)
    【.NET线程--进阶(一)】--线程方法详解
    [转] Location语法规则
    [转] 深入理解vue 一些底层原理
    [转] lodash常用方法
    [转] Vue 组件间通信六种方式(完整版)
    [转] vuejs组件通信精髓归纳
    [转] 浅谈移动端设备标识码:DeviceID、IMEI、IDFA、UDID和UUID
    [转] vue自定义组件中的v-model简单解释
  • 原文地址:https://www.cnblogs.com/zdfffg/p/11558395.html
Copyright © 2011-2022 走看看