以下是 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 的图像处理函数实现。具体步骤如下:

  1. 使用 C++ 的文件操作函数读取文件夹内所有文件名,可以使用 <dirent.h> 头文件中的 opendir()readdir()closedir() 函数。也可以使用 Windows API 中的 FindFirstFile()FindNextFile()FindClose() 函数。

  2. 对于每个文件名,使用 OpenCV 的 imread() 函数读取图像。如果读取失败,可以使用 continue 跳过该文件。

  3. 对于每个图像,使用 OpenCV 的 cvtColor() 函数将其转换为灰度图像。

  4. 使用 OpenCV 的 imwrite() 函数将灰度图像保存到指定路径。

以上就是对一个文件夹内多个图片进行读取之后灰度化,然后再保存的完整代码和详细讲解。

C++ OpenCV 实现文件夹内批量图片灰度化 - 底层算法读取文件

原文地址: https://www.cveoy.top/t/topic/j72D 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录