gpt4 book ai didi

c++ - 如何在 C++ 中仅将字符缓冲区中的规则间隔项写入磁盘

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:03:15 24 4
gpt4 key购买 nike

如何在 C++ 中快速写入字符缓冲区中的每三个项目?

我从我的相机中得到一张三 channel 图像,但每个 channel 都包含相同的信息(图像是灰度图像)。我只想将一个 channel 写入磁盘以节省空间并加快写入速度,因为这是实时数据收集系统的一部分。

C++ 的 ofstream::write 命令似乎只写入连续的二进制数据 block ,所以我当前的代码写入所有三个 channel 并且运行速度太慢:

char * data = getDataFromCamera();
int dataSize = imageWidth * imageHeight * imageChannels;
std::ofstream output;
output.open( fileName, std::ios::out | std::ios::binary );
output.write( data, dataSize );

我希望能够用这样的调用替换最后一行:

int skipSize = imageChannels;
output.write( data, dataSize, skipSize );

其中 skipSize 会导致 write 仅将三分之一放入输出文件。但是,我一直没能找到执行此操作的任何函数。

我很想听听有关将单个 channel 快速写入磁盘的任何想法。谢谢。

最佳答案

您可能需要将每三个元素复制到缓冲区中,然后将该缓冲区写入磁盘。

关于c++ - 如何在 C++ 中仅将字符缓冲区中的规则间隔项写入磁盘,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3291440/

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