对文件夹下所有图像做灰度转换,并做garma校正,产生不同的灰度亮度范围,方案用(13-14)

#pragma once
#include<stdio.h>
#include<opencv2/highgui/highgui.hpp>
#include<opencv2/core/core.hpp>
#include <cstdio>
#include <string>
#include <iostream>
#include <stdint.h>#include "opencv2/core.hpp"
#include <opencv2/opencv.hpp>
#include <math.h>
#include <io.h>
using namespace std;
using namespace cv;
#ifdef _DEBUG
#pragma comment(lib,"opencv_world340d.lib")
#else
#pragma comment(lib,"opencv_world340.lib")
#endif/*
1.读取整个文件夹中的所有图像
2.做灰度化处理,设置不同的灰度化方案,效果是,亮度不同
3.写入到不同的文件夹,文件夹命名不同
*/void getFiles(string path, vector<string>& files)
{intptr_t   hFile = 0;//intptr_t和uintptr_t是什么类型:typedef long int/ typedef unsigned long intstruct _finddata_t fileinfo;string p;if ((hFile = _findfirst(p.assign(path).append("\\*").c_str(), &fileinfo)) != -1)//assign方法可以理解为先将原字符串清空,然后赋予新的值作替换。{do{if ((fileinfo.attrib &  _A_SUBDIR))//是否为文件夹{if (strcmp(fileinfo.name, ".") != 0 && strcmp(fileinfo.name, "..") != 0)getFiles(p.assign(path).append("\\").append(fileinfo.name), files);//子文件夹下递归访问}else//非文件夹{files.push_back(p.assign(path).append("\\").append(fileinfo.name));}} while (_findnext(hFile, &fileinfo) == 0);_findclose(hFile);}
}void MyGammaCorrection(Mat& src, Mat& dst, float fGamma)
{CV_Assert(src.data);// accept only char type matricesCV_Assert(src.depth() != sizeof(uchar));// build look up tableunsigned char lut[256];for (int i = 0; i < 256; i++){lut[i] = saturate_cast<uchar>(pow((float)(i / 255.0), fGamma) * 255.0f);}dst = src.clone();const int channels = dst.channels();switch (channels){case 1:{MatIterator_<uchar> it, end;for (it = dst.begin<uchar>(), end = dst.end<uchar>(); it != end; it++)//*it = pow((float)(((*it))/255.0), fGamma) * 255.0;*it = lut[(*it)];break;}case 3:{MatIterator_<Vec3b> it, end;for (it = dst.begin<Vec3b>(), end = dst.end<Vec3b>(); it != end; it++){(*it)[0] = lut[((*it)[0])];(*it)[1] = lut[((*it)[1])];(*it)[2] = lut[((*it)[2])];}break;}}
}void RGBtoGray(string gallery_path, string form)
{vector<string> gallery_folders;getFiles(gallery_path, gallery_folders);int  nameNUM = 0;vector<string> image_list;for (int g = 0; g < gallery_folders.size(); g++) {if (gallery_folders[g].substr(gallery_folders[g].find_last_of(".") + 1) == form){//获取文件夹下指定格式(如jpg格式)的文件的路径(全路径)Mat src, OutMat;src = cv::imread(gallery_folders[g]);cv::cvtColor(src, src, CV_BGR2GRAY);//彩色转灰度MyGammaCorrection(src, src,1.0);vector<Mat> vHls;vHls.push_back(src);vHls.push_back(src);vHls.push_back(src);merge(vHls, OutMat);//输出要求依然是三通道,所以,构建一个三通道都是灰度图像的新图像imwrite(gallery_folders[g], OutMat);//写入到当前项目目录下             }}cout << "over";
}

调用方法:

void main()
{
//获得E:\\vincen\\OSG\\原始资料\\数据资料\\启明模型\\Models下面所有“jpg”格式文件,并做灰度转换和garma校正RGBtoGray("E:\\vincen\\OSG\\原始资料\\数据资料\\启明模型\\Models", "jpg");
}

http://www.taodudu.cc/news/show-1639484.html

相关文章:

  • OpenCV图像处理(17)—— 各种二值化对比
  • 真正的研发之路(1)
  • (2)Mac安装Parallels无法上网
  • C++ Licence认证用于项目开发和设备认证
  • (1)鼠标单独移动两个actor
  • (6)通过输入参数(测量数据)构建三维体模型
  • (4)建立一个标准尺寸的平面,并对其进行着色贴图、拉伸一定的厚度
  • (5)通过输入参数(测量数据)构建二维体模型(01)
  • (3)通过输入参数(测量数据)构建三维体模型(02)
  • (8)VTK 鼠标左右键控制模型旋转
  • (2)通过输入参数(测量数据)构建三维体模型(01)
  • (01)VTK读取OBJ格式模型
  • (02)vtk 绘制模型的外轮廓线 模型轮廓线
  • (03)两个模型的交集、并集、差集
  • (04)VTK移动模型,判断是否相交
  • (05)vtk通过多边形构建矩形,并拉伸成立方体,两个立方体独立操作
  • (06)vtk修改默认鼠标操作,实现鼠标按键控制模型旋转
  • who i am !
  • (01)OpenGL es中只在指定区域渲染view
  • (01)C++之设计模式演变
  • C++设计模式(全网最通俗易懂的设计模式进阶)
  • c++工程模式+配置文件+动态调用类
  • 读书感悟之,从术到道
  • 因果否?
  • (01)数据库及相关
  • avg最多用多少列 mysql_40斤一桶水,最多用多少克磷酸二氢钾?打几次增产效果最好...
  • 用单片机测量流体流速的_旋进旋涡流量计的测量原理及优点
  • 文字加减前后缀lisp_日本搞笑艺人催泪讲授汉字课堂告诉你文字背后的意义!...
  • 幼儿园调查过程怎么写_幼儿园对孩子的重要性你真的清楚吗?
  • 三星oneui主屏幕费电_这或许是单手握持手感最佳的手机 三星Galaxy S20上手体验...

OpenCV图像处理(18)——文件夹下所有图像转灰度(14-15综合)相关推荐

  1. OpenCV图像处理(14)——文件夹下所有图像转灰度

    前言 一个项目中,给三维模型的贴图是彩色的,但是要实现红外的纹理贴图,首先第一步是将彩色的转换成灰度,但是对于FBX格式文件,是如何从文件夹下读取不同部件的贴图,已经贴图的不同LOD级别,还没有搞清楚 ...

  2. matlab中取文件名函数,matlab从文件夹名中获取该文件夹下所图像文件名

    matlab从文件夹名中获得该文件夹下所图像文件名 function [s,nameC]=get_FileNameFromFolderPath(path) % 函数调用:[s,nameC]=get_F ...

  3. matlab从文件夹名中获得该文件夹下所图像文件名

    function [s,nameC]=get_FileNameFromFolderPath(path) % 函数调用:[s,nameC]=get_FileNameFromFolderPath(path ...

  4. OpenCV实现遍历文件夹下所有文件

    OpenCV中有实现遍历文件夹下所有文件的类Directory,它里面包括3个成员函数:(1).GetListFiles:遍历指定文件夹下的所有文件,不包括指定文件夹内的文件夹:(2).GetList ...

  5. c++ OpenCV 读取某个文件夹下的所有图片

    方案一 #include <vector> #include <opencv2/imgproc.hpp> #include <opencv2/highgui.hpp> ...

  6. python读取文件夹下所有图像 预处理_Tensorflow之tif图像文件预处理

    写在前面 许久没有登录我的简书了,或许忙只是给自己的借口,内心浮躁,不愿坐下来静下心写点东西才是真正的原因.写作是个该坚持的好习惯,一方面能记录下一些当时的心情想法,一方面也是在锻炼自己的表达能力.善 ...

  7. python读取文件夹下所有图像 预处理_在python中读取预处理的cr2原始图像数据

    您可以使用rawkit来获取这些数据,但是,您将无法使用实际的rawkit模块(它为处理原始图像提供了更高级别的api).相反,您将希望主要使用libraw模块,该模块允许您访问底层LibRaw ap ...

  8. python 读取一个文件夹下所有图像

    import osg = os.walk("G:") for path,d,filelist in g: for filename in filelist:if filename. ...

  9. Windows 下 C++ 利用 OpenCV glob 函数获取文件夹下所有文件绝对路径

    绪论 本文记录 Windows 下 C++ 利用 OpenCv glob 函数得到 文件夹下所有文件的绝对路径(含文件名).本文还含有 std::string::find()等函数的记录.如果是 Py ...

最新文章

  1. 如何实现容器透明,内容不透明?
  2. 微信6516android,微信6516版本怎么可以分组
  3. 【Matlab】山地建模?立体热度?怎么绘制三维曲面图?
  4. mfc 创建线程函数AfxBeginThread,线程中访问mfc控件
  5. Bali BaloCSS天才
  6. 工信部推动第二批“5G+工业互联网”实践的通知
  7. spring 随笔(一) bean Dependency Injection
  8. nodejs 嵌套消除和高并发
  9. 基于flask的网页聊天室(四)
  10. 没有副业的人,太难了。。。
  11. comsol仿真模型:风力发电机复合材料叶片的应力和模态分析
  12. Eucalyptus云平台搭建
  13. 如何解决Mac电脑键盘上的大写锁定键灯不亮?
  14. Excel 各版本每个sheet 最大行数限制
  15. Java Socket设置timeout几种常用方式总结
  16. play框架使用起来(6)
  17. (十一) ELK快速入门
  18. 第十一届蓝桥杯大赛决赛赛题 C++ 大学C组
  19. 比较文档相似度c语言,Doc2Vec,Word2Vec文本相似度 初体验。
  20. 离线翻译软件【免费电脑版】

热门文章

  1. [Python+sklearn] 拆分数据集为训练和测试子集 sklearn.model_selection.train_test_split()
  2. Linux查看CPU使用率、内存使用率等
  3. 百度网盘svip下载时显示下载请求中无下载速度
  4. 24V转5V的常规操作7812,7805,重要的是器件选型
  5. AD放置过孔按TAB键使过孔大小为设置值0.6/0.3
  6. 关于离散平稳信源的扩展信源的简单性质的练习题目(扩展信源划重点
  7. 顺序表查找及其优化(Java)
  8. centos locate搜索工具
  9. 非常简单,让log4j输出mybatis的sql语句和执行结果
  10. Week12(11月28日)