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