C++和Opencv实现对一个文件夹内多个图片进行读取之后灰度化然后再保存完整代码;并且将对应的原理详细讲解
以下是C++和OpenCV实现对一个文件夹内多个图片进行读取之后灰度化,然后再保存的完整代码:
#include <iostream>
#include <opencv2/opencv.hpp>
using namespace std;
using namespace cv;
int main()
{
// 打开文件夹
string folderPath = "images/";
vector<string> fileNames;
glob(folderPath, fileNames);
// 读取并处理每个图片
for (int i = 0; i < fileNames.size(); i++)
{
// 读取图片
Mat image = imread(fileNames[i]);
// 灰度化
Mat grayImage;
cvtColor(image, grayImage, COLOR_BGR2GRAY);
// 保存图片
string savePath = "gray_images/" + to_string(i) + ".jpg";
imwrite(savePath, grayImage);
}
return 0;
}
首先,我们使用glob函数打开一个文件夹,获取其中所有的图片文件名。glob函数是OpenCV中提供的一个文件夹读取函数,其功能是获取指定文件夹内符合特定模式的文件名,返回一个vector类型的容器。
然后,我们使用一个循环,对每个图片进行读取、灰度化和保存。在读取图片时,我们使用imread函数读取图片文件,返回一个Mat类型的矩阵,即图片数据。在灰度化时,我们使用cvtColor函数将BGR格式的彩色图片转换为灰度格式的图片。在保存图片时,我们使用imwrite函数将灰度化后的图片保存到指定文件夹内。
对应的原理如下:
- 使用
glob函数打开指定文件夹,获取其中所有符合特定模式的文件名。 - 对于每个图片,使用
imread函数读取图片文件,返回一个Mat类型的矩阵,即图片数据。 - 使用
cvtColor函数将BGR格式的彩色图片转换为灰度格式的图片。 - 使用
imwrite函数将灰度化后的图片保存到指定文件夹内
原文地址: https://www.cveoy.top/t/topic/cHVI 著作权归作者所有。请勿转载和采集!