C++和Opencv实现对一个文件夹内多个图片进行读取之后灰度化然后再保存完整代码对于读取文件夹所有图像使用底层算法不进行调用API;并且将对应的原理详细讲解
以下是C++和Opencv实现对一个文件夹内多个图片进行读取之后灰度化,然后再保存完整代码:
#include <iostream>
#include <fstream>
#include <string>
#include <opencv2/opencv.hpp>
using namespace std;
using namespace cv;
int main()
{
string folder_path = "path/to/folder/"; // 文件夹路径
vector<string> file_names; // 存储文件名
glob(folder_path + "*.jpg", file_names, false); // 获取所有jpg文件名
for (int i = 0; i < file_names.size(); i++)
{
Mat img = imread(file_names[i]); // 读取图像
if (img.empty())
{
cout << "Could not read image " << file_names[i] << endl;
continue;
}
Mat gray_img;
cvtColor(img, gray_img, COLOR_BGR2GRAY); // 灰度化
string save_path = folder_path + "gray_" + to_string(i) + ".jpg"; // 保存路径
imwrite(save_path, gray_img); // 保存灰度图像
}
return 0;
}
对于读取文件夹所有图像使用底层算法不进行调用API,可以使用C++的文件操作函数和Opencv的图像处理函数实现。具体步骤如下:
-
使用C++的文件操作函数读取文件夹内所有文件名,可以使用
<dirent.h>头文件中的opendir()、readdir()和closedir()函数。也可以使用Windows API中的FindFirstFile()、FindNextFile()和FindClose()函数。 -
对于每个文件名,使用Opencv的
imread()函数读取图像。如果读取失败,可以使用continue跳过该文件。 -
对于每个图像,使用Opencv的
cvtColor()函数将其转换为灰度图像。 -
使用Opencv的
imwrite()函数将灰度图像保存到指定路径。
以上就是对一个文件夹内多个图片进行读取之后灰度化,然后再保存的完整代码和详细讲解
原文地址: https://www.cveoy.top/t/topic/cHYJ 著作权归作者所有。请勿转载和采集!