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");
}