Witam serdecznie. Chcę stworzyć program w którym będę mógł dokonać efektu rozmycia (BLUR) na danym pliku BMP. Nie wiem czy idę dobrym tropem, ale po stworzeniu następującego kodu wyrzuca błąd: Unhandled exception at 0x3D18263C in Blur_BMP_CPU.exe: 0xC0000005: Access violation (parameters: 0x00000008).

Dodam że jestem początkujący a efekt moich działań jest oparty na wiedzy pozyskanej z innych stron w których były pokazane pewne rozwiązania dotyczące bitmap.

#include <iostream>
#include <cstdio>   
#include <windows.h> 

using namespace std;

BITMAPFILEHEADER BMPH;
BITMAPINFOHEADER BMPINFOH;

// Wczytywanie nagłówka pliku
int ReadFileHeader()
{
    char *filename = "birds.bmp";
    FILE *input = fopen(filename, "rb+");  

    if (input == NULL)
    {
        cout << "Plik nie zostal otwarty" << endl;
        exit(0);
    }
    cout << "Plik zostal otwarty pomyslnie" << endl;

    if (fread(&BMPH, sizeof(BITMAPFILEHEADER), 1, input) != 1) { 
        cout << " Blad w odczycie naglowka bmp" << endl;
        return -1;
    }

    if (fread(&BMPINFOH, sizeof(BITMAPINFOHEADER), 1, input) != 1) {
        cout << " Blad w odczycie informacji o zdjeciu" << endl;
        return -1;
    }
    fclose(input);

    return 1;
}

int Read_RGB_Array(unsigned char buffer[])
{
    unsigned long int n = BMPINFOH.biWidth*BMPINFOH.biHeight * 3; 
    char *filename = "birds.bmp";
    FILE *input = fopen(filename, "rb+");

    fseek(input, BMPH.bfOffBits, SEEK_SET); /

    for (int i = 0; i<n; i++) {
        buffer[i] = fgetc(input); 
    }

    fclose(input);
    return 1;
}

int main(){
    unsigned char tab[10];      <------- 
    ReadFileHeader();
    Read_RGB_Array(tab);     <------- Nie za bardzo wiem jak to przerobić by wielkość tablicy zgadzała się z ilością znaków wpisanych do  
                                                       tablicy buffer w funkcji Read_RGB_Array.
    system("pause");
}