У меня есть странные образы, которые я получаю с какого-то оборудования на работе. Они сделаны из этого странного оборудования, в котором несколько изображений сшиты вместе и хранятся в виде необработанных изображений. Подумайте об одном из этих дисплеев компьютерной безопасности с четырьмя изображениями, отображаемыми одновременно. По сути, это так. И тогда они хранятся в виде необработанных изображений. Энннд, для этого старого куска мусора нет документации.
Я попытался написать экстрактор, чтобы разделить изображения на отдельные необработанные файлы. Но программное обеспечение необработанных изображений, которое я использовал, чтобы попытаться прочитать изображение, извлеченное в качестве теста, указывает, что оно повреждено. В настоящее время я думаю, что, хотя это просто необработанные данные, там должен быть заголовок файла. Но как бы я ни выглядел, я не могу найти определение для необработанного файла изображения онлайн. Я вижу, что существует множество различных типов файлов необработанных изображений, но я даже не могу найти определения для них.
Любой совет для меня?
edit: После перечитывания этого, я не думаю, что я был очень ясен. Я сделал предположение о чтении в моем необработанном файле, который я хочу разделить, предположив, что я считаю, что в файле нет заголовка, и начинаю копировать данные для первого изображения, которое я извлекаю, с первым байтом данных. Я также делаю то же предположение в записываемом файле изображения и не пишу заголовок, так как копирую изображение. Я считаю, что мое предположение об отсутствии заголовков неверно, и прошу разъяснений по этому поводу. Чтобы помочь объяснить это, я включаю тестовый код, который я написал:
#include <stdio.h>
#include <string.h>
using namespace std;
//size of individual image
int width = 400;
int height = 400;
//size of input image
int inputWidth = 1600;
int inputHeight = 8000;
int offset = 16;
char strInputFile[] = "captured.raw";
char strOutputFile[] = "extracted.raw";
int main()
{
printf( "Hi\n" );
FILE* pInput = NULL;
FILE* pOutput = NULL;
char* buf = new char[width];
memset( buf, 0, width );
pInput = fopen( strInputFile,"rb" );
pOutput = fopen( strOutputFile,"wb" );
if( pInput && pOutput )
{
for( int i = 0; i < height; i++ )
{
//read in a row of pixels
fread( buf, 1, width, pInput );
//write out the row of pixels
fwrite( buf, 1, width, pOutput );
//move the file pointer forward to the next row of pixels
fseek( pInput, inputWidth - width, SEEK_CUR );
}
}
fclose( pInput );
fclose( pOutput );
return 0;
}