logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

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

oscylator izotropowy 10 Sie 2012 09:50 1932 5
REKLAMA
  • #1 11193622
    oscylator izotropowy
    Poziom 2  
    Posty: 4
    Ocena: 1
    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).
    Kod: text
    Zaloguj się, aby zobaczyć kod
  • REKLAMA
  • #2 11194893
    Dżyszla
    Poziom 42  
    Posty: 7075
    Pomógł: 1095
    Ocena: 225
    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.
  • REKLAMA
  • #3 11195046
    oscylator izotropowy
    Poziom 2  
    Posty: 4
    Ocena: 1
    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?
  • REKLAMA
  • #4 11195132
    stanleysts
    Poziom 27  
    Posty: 838
    Pomógł: 115
    Ocena: 2
    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.
  • REKLAMA
  • #5 11195317
    oscylator izotropowy
    Poziom 2  
    Posty: 4
    Ocena: 1
    OK - zatem wracam do podstaw.
REKLAMA