• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

C++ operacja na bitmapie 24bit. Problem, nakierowanie na rozwiązanie, pomoc w rozwiązaniu wyostrzania obrazu

0 głosów
78 wizyt
pytanie zadane 30 lipca 2018 w C i C++ przez Jakub Bartczak Nowicjusz (120 p.)

Witam, 

chciałbym prosić o pomoc w rozwiązaniu problemu wyostrzania obrazu, maską 3 na 3.

odczytuję obraz, nagłówek, szerokość, wysokość, rozmiar, przypisuję do tablicy kolorów wartości poszczególnych pikseli. Następnie tworząc obraz wynikowy chcę wykorzystać wielokrotności wartości w tablicy każdego koloru, aby móc użyć na nich tej maski, tutaj funkcja którą tworzę obraz wynikowy:

unsigned char *polaczRGB(int **niebieski, int **zielony, int **czerwony, unsigned int rozmiar, int szerokosc, int wysokosc)
{
    int zerowe_bajty = rozmiar/wysokosc - 3*szerokosc;
    unsigned char * obraz = new unsigned char [rozmiar];
    for (int k = 0; k < rozmiar; k++)
        obraz[k] = 0;
    int k = 0;
    for (int i = 0; i < wysokosc; i++)
        {for (int j = 0; j < szerokosc; j++)
        {
            niebieski[1][1]=niebieski[i-1][j-1]+niebieski[i][j-1];
             obraz[k++]=niebieski[i][j];
             obraz[k++]=zielony[i][j];
             obraz[k++] = czerwony[i][j];
        }
        
        k+=zerowe_bajty;    
    }
    return obraz;	

 

czy całkowicie źle podszedłem do problemu? przetworzyć dane w osobnej funkcji, do tablicy kolorów mam łatwy dostęp i w ten sposób chciałem to zrobić, jednak plik exe się zacina po kompilacji w ten sposób.

1 odpowiedź

0 głosów
odpowiedź 31 lipca 2018 przez j23 VIP (105,820 p.)

Jeśli zerowe_bajty to ma być wyrównanie wiersza do czterech bajtów, to tak to powinieneś wyliczyć:

unsigned zerowe_bajty = (szerokosc * 3) & 3;
if(zerowe_bajty > 0) zerowe_bajty = 4 - zerowe_bajty; 

Nie rozumiem, dlaczego funkcja przyjmuje w argumencie rozmiar, skoro może go sobie wyliczyć z szerokości i wysokości bitmapy.

 

niebieski jest indeksowany ujemnym indeksem, zakładam, że przewidziałeś to...

Podobne pytania

–1 głos
2 odpowiedzi 120 wizyt
pytanie zadane 18 kwietnia 2018 w C i C++ przez gimnazjum Nowicjusz (120 p.)
+1 głos
2 odpowiedzi 129 wizyt
pytanie zadane 17 grudnia 2017 w JavaScript, jQuery, AJAX przez ldqpbl Nowicjusz (130 p.)
0 głosów
0 odpowiedzi 256 wizyt
Porady nie od parady
Publikując kody źródłowe korzystaj ze specjalnego bloczku koloryzującego składnię (przycisk z napisem code w edytorze). Nie zapomnij o ustawieniu odpowiedniego języka z rozwijanego menu oraz czytelnym formatowaniu kodu.Przycisk code

65,654 zapytań

112,282 odpowiedzi

236,928 komentarzy

46,645 pasjonatów

Przeglądających: 150
Pasjonatów: 1 Gości: 149

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto dwie polecane książki warte uwagi. Pełną listę znajdziesz tutaj.

...