Hey !
Mam problem z wykonaniem zadania na zajęcia z programowania. Jestem świeżym studentem i ale w związku z moją małą wiedzą na ten temat jest ciężko. Mam wykonać operacje splotu na 24-bitowej bitmapie i zapisać obraz wynikowy na dysku. Mam wykorzystać maskę o wartościach:
0 -1 0
-1 5 -1
0 -1 0
Wczytuje plik:
unsigned char* odczytajDaneObrazu(ifstream&, unsigned int rozmiar, int kursor)
{
ifs.seekg(kursor, ios::beg);
unsigned char *obraz = new unsigned char(rozmiar);
ifs.read(reinterpret_cast<char*>(obraz), rozmiar);
return obraz;
}
Wiem, że po wczytaniu pliku muszę go podzielić na kolory. Obliczam liczbę zer biorąc pod uwagę rozmiar danych pliku wejściowego: rozmiar A = BfSize - BfoffBits
Obliczam rozmiar w pikselach: rozmiar B (bez zer)= biWidth - biHeight
Wyliczam ilość zer - (rozmiar A - rozmiar B)/biHeight co jest mniej więcej tutaj:
void odczytajRGB(unsgidned char *obraz, int **niebieski, int **zielony, int **czerwony, unsigned int rozmiar, int szerokosc, int wysokosc)
{
int zerowe_bajty = rozmiar / wysokosc - 3*szerokosc;
int k = 0;
for (int i =0; i < wysokosc; i++)
(for (int j = 0; j < szerokosc; j++)
{
niebieski [i][j]=obraz[k++];
zielony [i][j]=obraz[k++];
czerwony [i][j]=obraz[k++];
}
k+=zerowe_bajty;
}
w tym miejscu moja wiedza się urywa. Operacja splotu jest dla mnie na razie zagadką i mam nadzieje że ktoś mi wyjaśni i pomoże to wszystko skleić w jednolity program.
Pozdrawiam !