如何在char缓冲区中只编写每三个项目以便在C++中快速编写文件?
我从相机中获得了三通道图像,但每个通道包含相同的信息(图像为灰度).我想只写一个通道到磁盘以节省空间并使写入更快,因为这是实时数据采集系统的一部分.
C++的ofstream :: write命令似乎只编写连续的二进制数据块,因此我的当前代码会写入所有三个通道并且运行速度太慢:
char * data = getDataFromCamera();
int dataSize = imageWidth * imageHeight * imageChannels;
std::ofstream output;
output.open( fileName, std::ios::out | std::ios::binary );
output.write( data, dataSize );
Run Code Online (Sandbox Code Playgroud)
我希望能够通过以下呼叫替换最后一行:
int skipSize = imageChannels;
output.write( data, dataSize, skipSize );
Run Code Online (Sandbox Code Playgroud)
其中skipSize会导致write只将每三分之一放入输出文件中.但是,我还没有找到任何能够做到这一点的功能.
我很想听听有关将单个频道快速写入磁盘的任何想法.谢谢.