c++ - 跳转到文件中位置的最快方法 (C/C++)

标签 c++ image-processing

我有一些二进制格式 (uint8) 的 6k 图片,我一次以 30 行左右的 block 为单位处理图片。这意味着我最终不得不跳过大部分文件,直到到达我需要的位置。到目前为止,最快的方法似乎是将不必要的部分读入一个临时变量,然后删除该变量,但从逻辑上讲,这似乎不是最有效的方法。

ifstream img;
int startingPixel = N;
for(int frame=0;frame<numFrames;frame++){
    img.open("myfileAsFunctionOfFrame.bin",ios::in | ios::binary);
    img.read((char*) &tempArray[0], startingPixel*sizeof(uint8));
    img.read((char*) &myArray[frame*pixelsToRead], pixelsToRead*sizeof(uint8));
    img.close();
}
delete [] tempArray;

我尝试使用 img.ignore(),但这使速度变慢了。

有什么建议吗?

最佳答案

使用 seekg 方法。它正是为您想要做的而制作的。 http://www.cplusplus.com/reference/iostream/istream/seekg/

希望对你有帮助

关于c++ - 跳转到文件中位置的最快方法 (C/C++),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6521889/

相关文章:

c++ - 将此类在其构造函数中的引用传递给指针 vector C++

c++ - C++ 中的对象变量保存值,而不是对象引用

c++ - 如何在 STL 容器 C++11 中查找不同值

matlab - 以最快的方式删除点云中的 Inf 和 NaN 值

math - 如何标准化图像?

c++ - imshow 不工作

c++ - 如何从具有 std::string 的对象调用函数

c++ - 为什么在实例化具有函数类型的 C++ 模板时得到 "Error: symbol is already defined"

matlab - 为什么 SIFT 在 Matlab 中不可用?

node.js - 根据原始图像大小进行 GraphicsMagick 裁剪(重新使用读取流)