gpt4 book ai didi

c++ - 使用 opencv 在 C++ 中读取图像文件序列 w/o

转载 作者:太空宇宙 更新时间:2023-11-04 11:27:13 24 4
gpt4 key购买 nike

给定图像文件

lights000.rgbe
lights001.rgbe
lights002.rgbe
...
lights899.rgbe

都位于一个子文件夹中。先读取一个文件再读取下一个文件的最佳方式是什么?

鉴于我对 .rgbe 的读取命令称为 readHDR(char* filename)

我已经看到几个关于这个问题的问题,但他们都使用 OpenCV。我没有使用 opencv,.rgbe 甚至不是受支持的 OpenCV 文件扩展名,因此该方法甚至无法工作。

我从另一个问题中看到了以下代码:

char* Dataset_Dir( "C:/Data/" ); // Or take it from argv[1]
cv::Mat normal_matrix;
std::vector<cv::Mat>* image_stack;
for( int i=1; i<=endNumber; ++i )
{
// Gives the entire stack of images for you to go through
image_stack->push_back(cv::imread(std::format("%s/%03d-capture.png", Dataset, i), CV_LOAD_IMAGE_COLOR));

normal_matrix = cv::imread(std::format("%s/%03d-capture.png", Dataset, i), CV_LOAD_IMAGE_COLOR);
}

但我找不到任何关于 std::format 命令或 Dataset_Dir 的信息。

关于如何将文件名字符串分成三部分的任何建议都会非常有帮助。

拆分成:

 char Name = "lights";
int Num = "000";
char File = ".rgbe;

最佳答案

这是一个简单的解决方案,如何根据您指定的标准拆分文件名字符串:

#include <iostream>
#include <string>
#include <sstream>

using namespace std;

int main() {
istringstream filename("lights042.rgbe");
string Name;
int Num;
string File;

while(filename && !isdigit(filename.peek())) {
char c;
filename >> c;
Name += c;
}

filename >> Num;
filename >> File;

cout << "Name = '" << Name << "'" << endl;
cout << "Num = " << Num << endl;
cout << "File = '" << File << "'" << endl;

return 0;
}

输出

Name = 'lights'
Num = 42
File = '.rgbe'

参见 live demo请。

关于c++ - 使用 opencv 在 C++ 中读取图像文件序列 w/o,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26224991/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com