Elektroda.pl
Elektroda.pl
X

Search our partners

Find the latest content on electronic components. Datasheets.com
Elektroda.pl
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

C++ - Wypisanie wartości pikseli z szaroodcieniowej bmp

10 Aug 2012 09:50 1527 5
  • Level 2  
    Witam

    Chcę pobrać wartości pikseli z 8-bitowego obrazka i wpisać je do tablicy a potem do pliku txt. Problem niby oklepany, ale google niewiele mi pomogło. Niestety dawno (5 lat?) nic nie programowałem, więc możliwe, że popełniam jakiś podstawowy błąd. Byłbym bardzo wdzięczny za pomoc.

    Szczegóły:
    Na początek postanowiłem wypisać sobie wartość bylejakiego piksela na ekran - widzę krzaki. Wydaje mi się (nie wiem czy słusznie), że problemem może być konwersja typów - piksele szaroodcieniowej bmp mają wartości 0-255 (unsigned char), ale dla tablicy bufora mogę użyć tylko char, ponieważ innego argumentu nie akceptuje mi funkcja read.

    Bitmapa ma 256x256, nagłówek zajmuje 1076 bajtów, więc spróbowałem odczytać i wypisać któryś z dalszych.

    Nie chciałbym korzystać z żadnych gotowych bibliotek.

    Poniżej mój kod (a raczej kodzik).
    Code: cpp
    Log in, to see the code
  • Level 42  
    BMP o wielkości "piksela" 1, 2, 4 i 8 bitów są bitmapami indeksowanymi. Oznacza to, że każdy kolor jest zapisany w tablicy kolorów (w postaci 24-bitowej), a następnie umieszczane są wyłącznie indeksy z tej tablicy. Na początek proponuję po prostu poznać budowę pliku BMP, jeśli chcesz go czytać nie używając do tego komponentów dekodujących plik do prostszej postaci.
  • Level 2  
    Dzięki za odpowiedź.

    Potwierdź proszę czy dobrze rozumiem to co napisałeś - wewnątrz nagłówka znajduje się tablica z kolorami zapisanymi w postaci 24-bitowej (w moim przypadku 256 odcieni szarości, a więc tablica 1D mająca 256 elementów). Każdy piksel to element tablicy 2D, zawierający tylko numer elementu tablicy z nagłówka przechowującej kolory. Czy o to tutaj chodzi?
  • Level 27  
    Nie - jest nagłówek pliku, nagłówek rysunku a potem dane (paleta określająca kolor punktów) - o tym ile ich jest mozna dowiedzeic sie odczytujac odpowiednie bajty naglowka rysunku, tam tez jest podana informacja o tym ile bitow przypada na kazdy kolor, zreszta wszystko jest w necie odnosnie budowy pliku bmp.
  • Level 2  
    OK - zatem wracam do podstaw.