Как я могу записать только каждый третий элемент в буфер символов в файл для быстрого 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 );
Я бы хотел иметь возможность заменить последнюю строку вызовом, подобным:
int skipSize = imageChannels;
output.write( data, dataSize, skipSize );
где skipSize приведет к тому, что write поместит в выходной файл только каждую треть. Однако я не смог найти ни одной функции, которая делает это.
Мне бы очень хотелось услышать любые идеи по быстрой записи одного канала на диск.
Спасибо.