cv2读取文件夹下多张图片并保存至另一个文件夹
时间: 2023-12-03 15:04:53 浏览: 169
可以使用 `os` 和 `cv2` 模块来实现读取文件夹下多张图片并保存至另一个文件夹的操作。以下是一个示例代码:
```python
import os
import cv2
# 设置输入和输出文件夹路径
input_folder = "path/to/input/folder"
output_folder = "path/to/output/folder"
# 遍历输入文件夹中的所有图片,并进行处理
for filename in os.listdir(input_folder):
# 读取图片
img = cv2.imread(os.path.join(input_folder, filename))
# 进行图片处理,这里是一个示例,可以根据需求修改
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
# 保存处理后的图片到输出文件夹
cv2.imwrite(os.path.join(output_folder, filename), gray)
```
在上面的代码中,我们首先设置了输入和输出文件夹的路径。然后,通过 `os.listdir` 函数遍历输入文件夹中的所有文件,并使用 `cv2.imread` 函数读取每张图片。接下来,我们可以对每张图片进行处理,这里是一个示例,将图片转换为灰度图像。最后,使用 `cv2.imwrite` 函数将处理后的图片保存到输出文件夹中。
相关问题
c/c++利用opencv读取文件夹中的图片,并将图片的rgb信息按照每个图片名保存在另一个文件夹下
你好,您可以使用C++语言中的OpenCV库来实现此功能。以下是一个基本的示例代码:
```
#include <opencv2/opencv.hpp>
#include <iostream>
#include <string>
using namespace cv;
using namespace std;
int main()
{
string folderPath = "path/to/folder"; // 图片文件夹的路径
string savePath = "path/to/save/folder"; // 存储文件夹的路径
vector<String> files;
glob(folderPath, files); // 获取所有文件的文件名
for (size_t i = 0; i < files.size(); ++i)
{
Mat img = imread(files[i]); // 读取图片文件
if (!img.empty())
{
string fileName = files[i].substr(files[i].find_last_of("\\/") + 1); // 获取文件名,需要根据操作系统做出相应修改
string saveFileName = savePath + "\\" + fileName.substr(0, fileName.find(".")) + ".txt"; // 生成每个图片名对应的 txt 文件名
ofstream outFile(saveFileName); // 创建 txt 文件
// 输出每个像素点的 RGB 信息到 txt 文件
for (int y = 0; y < img.rows; ++y)
{
for (int x = 0; x < img.cols; ++x)
{
Vec3b pixel = img.at<Vec3b>(y, x); // 获取当前像素点的 RGB 值
outFile << int(pixel[0]) << " " << int(pixel[1]) << " " << int(pixel[2]) << endl;
}
}
outFile.close(); // 关闭文件流
}
}
return 0;
}
```
上述代码可以遍历指定文件夹中的所有图片,将每张图片的 RGB 信息按照图片名保存在另一个文件夹下。您可以根据实际需求进行相应修改。希望能对您有所帮助。
C语言利用opencv读取文件夹下所有格式图片的rgb信息,并依次保存在另一个文化夹下
,您好!感谢您使用我们开发的ChitGPT进行对话。为了回答您的问题,我需要先解释一下您提到的一些技术点。
首先,C语言是一种编程语言,而OpenCV则是一个可以在C++、Python、Java等多种编程语言中使用的开源计算机视觉库。它提供了一些对图像处理非常有用的函数和类,比如读取和处理图像、绘制图像等。
那么,要回答您的问题,您首先需要使用OpenCV中的函数来读取指定文件夹下的所有格式图片,并逐一处理每个图片的RGB信息。我们可以使用OpenCV中的`cv::imread`函数来读取图片,然后使用`cv::split`函数来将RGB通道分离出来,最后再将RGB信息存入另一个文件夹中。下面是一个简单的代码示例:
```c
#include <opencv2/opencv.hpp>
#include <iostream>
#include <vector>
#include <string>
#include <fstream>
using namespace cv;
using namespace std;
int main()
{
string path = "your_folder_path";
string save_path = "your_save_folder_path";
vector<string> file_names;
glob(path+"/*.*", file_names, false);
for (int i=0; i<file_names.size(); i++)
{
Mat img = imread(file_names[i]);
vector<Mat> bgr_planes;
split(img, bgr_planes);
ofstream fout(save_path+"/"+to_string(i)+".txt");
for (int j=0; j<bgr_planes[0].rows; j++)
{
for (int k=0; k<bgr_planes[0].cols; k++)
{
fout << (int)bgr_planes[2].at<uchar>(j,k) << " "
<< (int)bgr_planes[1].at<uchar>(j,k) << " "
<< (int)bgr_planes[0].at<uchar>(j,k) << endl;
}
}
fout.close();
}
return 0;
}
```
在这段代码中,`string path`和`string save_path`分别为要读取的文件夹路径和保存RGB信息的文件夹路径,`vector<string> file_names`用于存放文件夹下的所有文件名。然后使用`glob`函数读取文件夹下的所有文件名,`imread`函数读取每个图片,再使用`split`函数分离出RGB信息。最后,将RGB信息保存到一个txt文件中。
希望这个回答能够帮到您,如果您还有其它问题,请随时提出。
阅读全文