cv::Mat histogramEqualization(cv::Mat img){
int rows=img.rows;
int cols=img.cols;
cv::Mat grayScale=cv::Mat::zeros(cv::Size(,),CV_32SC1);
cv::Mat grayScaleSum=cv::Mat::zeros(cv::Size(,),CV_32SC1);
cv::Mat _output=cv::Mat::zeros(cv::Size(,),CV_8UC1);
cv::Mat output=cv::Mat::zeros(img.size(),CV_8UC1);
float cofficient=256.0/(rows*cols); for(int i=;i<rows;++i){ // 计算不同灰度值的个数。
for(int j=;j<cols;++j){
int index=int(img.at<uchar>(i,j));
grayScale.at<int>(,index)+=;
}
} for(int j=;j<;++j){
if(j==)grayScaleSum.at<int>(,j)=grayScale.at<int>(,);
else grayScaleSum.at<int>(,j)=grayScaleSum.at<int>(,j-)+grayScale.at<int>(,j);
} for(int i=;i<;++i){
float q=cofficient*grayScaleSum.at<int>(,i)-;
if(q>=)_output.at<uchar>(,i)=uchar(floor(q)); // floor(x)Largest integer not greater than X.
else _output.at<uchar>(,i)=;
} for(int i=;i<rows;++i){
for(int j=;j<cols;++j){
int p=img.at<uchar>(i,j);
output.at<uchar>(i,j)=_output.at<uchar>(,p);
}
}
return output;
} int main(){
cv::Mat img=cv::imread("/home/nan/图片/openimage/girl.jpg",cv::IMREAD_GRAYSCALE);
cv::imshow("img",img);
//cv::Mat output= equalHist(img);
cv::Mat output= histogramEqualization(img);
cv::imshow("全局直方图均衡化",output);
cv::waitKey();
return ;
}

最新文章

  1. 迷你MVVM框架 avalonjs 实现上的几个难点
  2. Android 四大组件 与 MVC 架构模式
  3. 1 张图秒懂 Nova 16 种操作 - 每天5分钟玩转 OpenStack(44)
  4. Android Mina框架的学习笔记
  5. gevent中如何实现长轮询
  6. SQL Server数据库(SQL Sever语言 存储过程及触发器)
  7. 重构6-Push Down Field(字段下移)
  8. hdu-5686 Problem B(斐波那契数列)
  9. 含有特殊字符的JSON串解析方法
  10. Jquery插件写法及extentd函数
  11. Ubuntu使用之Svn命令小技巧
  12. csdn我的blog成长轨迹(好吧我是闲的蛋疼)
  13. python-三级菜单-67
  14. golang项目:goa和micro
  15. 如何在Sitecore CMS中创建项目
  16. python中的break\return\pass\continue用法
  17. opencv图像识别技术在自动化测试中的应用
  18. 【Android】1.0 第1章 C#之Android手机App开发
  19. linux 简单常用命令
  20. Redis 集合 set 操作, 有序集合

热门文章

  1. WebStorm 2019.3.1 破解 永久使用 亲测100%成功
  2. [工具推荐]005.Axure RP Pro 7.0模拟C#TAB控件
  3. Chisel3 - 基本数据类型
  4. Java实现 LeetCode 836 矩形重叠(暴力)
  5. Java实现 LeetCode 810 黑板异或游戏 (分析)
  6. Java实现 LeetCode 701 二叉搜索树中的插入操作(遍历树)
  7. Java实现 LeetCode 592 分数加减运算(纯体力活)
  8. Java实现蓝桥杯互补二元组
  9. java实现扑克牌排列
  10. Java实现第八届蓝桥杯拉马车