你可以将读取图像的代码封装为一个函数,使其更具模块化和可重用性。下面是如何实现这个功能的示例代码:
#include <opencv2/opencv.hpp>
#include <iostream>
#include <vector>
using namespace cv;
using namespace std;
// Function to read images from specified file paths
void readImages(const vector<string>& filenames, vector<Mat>& images) {
for (const auto& filename : filenames) {
Mat im = imread(filename);
if (im.empty()) {
cout << "Could not read image: " << filename << endl;
} else {
images.push_back(im);
}
}
}
int main() {
// Specify the number of images and their filenames
int numImages = 3;
vector<string> filenames = {
"Data/img_test/6.第三面侧视图/100.bmp",
"Data/img_test/6.第三面侧视图/101.bmp",
"Data/img_test/6.第三面侧视图/102.bmp"
// 可以在这里添加更多文件路径
};
vector<Mat> images;
// Call the function to read images
readImages(filenames, images);
// 处理读取的图像(例如显示或进一步处理)
return 0;
}
代码说明:
readImages
函数:接受一个字符串向量filenames
和一个用于存储读取后图像的images
向量。对于每个文件名,它尝试读取图像,并在成功时将其添加到images
向量中。如果读取失败,则输出错误信息。主函数 (
main
):- 定义了要读取的图片数量和文件名列表。
- 调用
readImages
函数来读取这些图片。
这样,你就把原来的读图逻辑封装成了一个独立的函数,提高了代码的可读性和可维护性。你可以随时调用这个函数来读取不同路径下的图片,只需传递相应的文件名列表即可。
内容由零声教学AI助手提供,问题来源于学员提问