извлекать необработанные данные изображения, но результат не соответствует ожиданиям - PullRequest
0 голосов
/ 12 октября 2018

Я использую C ++ для извлечения необработанных данных изображения.1280x800 area is what I want

Но тут возникает проблема.Я использую либо fseek, либо fread функции для перемещения указателя файла, но оба результата не соответствуют моим ожиданиям.Кажется, указатель - это не то место, куда я хочу переместиться.Может ли кто-нибудь дать мне подсказку?

#include <stdio.h>
#include <stdlib.h>

int IMAGE_WIDTH=1280;
int IMAGE_HEIGHT=800;
int size=1280*800*2;
int header=128;
int line_padding=0;

int main()
{
    FILE* fd;
    FILE* fd_bin;
    char *temp = (char*)malloc(size);
    char *dat = (char*)malloc(size);

    if (!dat) {
        perror("malloc");
        return NULL;
    }


    fd = fopen("original.raw", "rb");
    if (!fd) {
        printf("File Read Fail...\n");
        exit(1);
    }

//    fseek(fd, header, SEEK_SET);
        fread(temp, 1, header, fd);

    for(int k=0;k<IMAGE_HEIGHT;k++)
    {
        fread(dat, 1, IMAGE_WIDTH*2, fd);
        //fseek(fd , line_padding*2, SEEK_CUR);
                fread(temp, 1, line_padding*2, fd);
    }


/////////////////////////////Save bin
    fd_bin = fopen("output.raw", "wb");
    if (!fd_bin) {
        printf("File Open Fail...\n");
        exit(1);
    }

    fwrite( dat, 1, IMAGE_WIDTH*IMAGE_HEIGHT*2, fd_bin);

    fclose(fd_bin);
///////////////////////////////////////////
    fclose(fd);

    free(temp);
    free(dat);
}
...