[C++ Builder]Wpisywanie danych poszczegolnych pixeli do pliku

0

Witam.

Piszę program w C++ Builder 6 odnośnie przetwarzania obrazów. Chciałbym kolejne składowe kolorów zapisywać w oddzielnych plikach, które będę później wczytywał i na nich działał. Potrzebuję je w trybie szesnastkowym. Chodzi mi o cos takiego, czyli żeby w pliku dało się odczytać każdy pixel:

//Składowa koloru czerwonego:

| pixel (0,0) | pixel(0,1) | pixel(0,2)
| pixel (1,0) | pixel(1,1) | pixel(1,2)
| pixel (2,0) | pixel(2,1) | pixel(2,2)

Kolory zczytuję za pomocą funkcji GETRVALUE (dla koloru czerwonego) i wpisuję je do tablicy r[i][j] , czyli w tablicy mam dostęp do określonej składowej koloru danego pixela. Do pliku wpisywałem za pomocą funkcji fprintf, ale tam nie mam już tego podzielenia i,j tylko wszystkie składowe pod sobą (około 50000 wierszy) a chciałbym by to było jakoś łatwe do odczytania. Chyba, że ktoś by mnie naprowadził jak zrobić by później w innym miejscu wczytać dane z pliku do tablicy[i][j]. Oto fragment kodu:

void __fastcall TForm1::FormCreate(TObject *Sender)
{
FILE *pixel; //wskaznik do pliku
   pixel=fopen("D:\\pixel.txt", "w");
for(int j=0;j<ObrazKolorowy->Height;j++)
   {
	for(int i=0;i<ObrazKolorowy->Width;i++)
	{
		r[i][j]=GetRValue(ObrazKolorowy->Canvas->Pixels[i][j]);  //pobieranie czerwonego koloru do zmiennej
		g[i][j]=GetGValue(ObrazKolorowy->Canvas->Pixels[i][j]); //pobieranie zielonego koloru do zmiennej
		b[i][j]=GetBValue(ObrazKolorowy->Canvas->Pixels[i][j]); //pobieranie niebieskiego koloru do zmiennej

		if (r[i][j] > 255) r[i][j] = 255;
		else if (r[i][j] < 0) r[i][j] = 0;
		if (g[i][j] > 255) g[i][j] = 255;
		else if (g[i][j] < 0) g[i][j] = 0;
		if (b[i][j] > 255) b[i][j] = 255;
		else if (b[i][j] < 0) b[i][j] = 0;

		fprintf(pixel,"\n %X %X %X",r[i][j],g[i][j],b[i][j]);
	}
   }
}
 

P.S.
Te składowe muszę przesłać później po rs232 na mikrokontroler, więc dlatego chciałem do tego użyć systemu szesnastkowego.

Pozdrawiam i dziękuję za wszelką pomoc!

0

Po co ci te tablice r,g,b? Nie wystarczy ci ObrazKolorowy->Canvas->Pixels?
Dobra nieważne!

void __fastcall TForm1::FormCreate(TObject *Sender)
{
    FILE *pixel; //wskaznik do pliku
    pixel=fopen("D:\\zielony.txt", "w");
    for(int j=0;j<ObrazKolorowy->Height;j++)
    {
        for(int i=0;i<ObrazKolorowy->Width;i++)
        {
            TColor color = ObrazKolorowy->Canvas->Pixels[i][j];
            int r =GetRValue(color);  //pobieranie czerwonego koloru do zmiennej
            fprintf(pixel,"%2X ", r);
        }
        fprintf(pixel,"\n");
   }
}

1 użytkowników online, w tym zalogowanych: 0, gości: 1