Generator losowych obrazów


14

Generuję losowe dane i próbuję przekonwertować je na obraz PNG, używając:

head -c 1MB < /dev/urandom | hexdump -e '16/1 "_x%02X"' | sed 's/_/\\/g; s/\\x  //g; s/.*/    "&"/' | tr -d "\"" | display -depth 8 -size 1000x1000+0 rgb:-

To polecenie zawsze pokazuje szarawy obraz z niektórymi pikselami RGB. Co ja robię źle ?

Moim ostatnim celem jest wygenerowanie co najmniej jednego obrazu z losowymi danymi.


Zdefiniuj „losowy”. W końcu średnia wizualna wiązki losowych wartości RGB będzie zmierzać w kierunku szarości.
Wildcard

Tak myślałem, ale nie mogłem potwierdzić tej teorii, ponieważ każde zdjęcie wygląda prawie tak samo.
pxoto

15 lat temu zrobiłem coś podobnego w Basicu (konkretnie Chipmunk Basic). Miałem małe okno graficzne i ciągle wyświetlałem piksel losowego koloru w losowej lokalizacji. Rezultatem był ciągle zmieniający się obraz, który wciąż wyglądał zasadniczo tak samo przez cały czas - jak statyczny kolor na starym telewizorze. Nie jest tak naprawdę szary, ale ma kolor statyczny .
Wildcard

Udało mi się wygenerować trochę statycznych obrazów, ale obrazy są w większości nadal szare.
pxoto

Odpowiedzi:


17

Po pierwsze, musisz display RGB:-podać nieprzetworzone bajty, a nie zakodowany ciąg szesnastkowy, tak jak budujesz z tym hexdump | sed | trpotokiem.

Po drugie, nie podajesz wystarczającej ilości bajtów: potrzebujesz 3 bajtów na piksel, po jednym na każdy kanał koloru.

Robi to, co chcesz:

mx=320;my=256;head -c "$((3*mx*my))" /dev/urandom | display -depth 8 -size "${mx}x${my}" RGB:-

Aby zapisać bezpośrednio w PNG, możesz to zrobić:

mx=320;my=256;head -c "$((3*mx*my))" /dev/urandom | convert -depth 8 -size "${mx}x${my}" RGB:- random.png

Oto typowy obraz wyjściowy:

Obraz RGB wygenerowany z / dev / urandom


Jeśli chcesz zrobić animację, nie musisz tworzyć i zapisywać pojedynczych klatek. Możesz podać nieprzetworzony strumień bajtów bezpośrednio do ffmpeg / avconv, np

mx=320; my=256; nframes=100; dd if=/dev/urandom bs="$((mx*my*3))" count="$nframes" | avconv -r 25 -s "${mx}x${my}" -f rawvideo -pix_fmt rgb24 -i - random.mp4

Nie mogę uwierzyć, że tak naprawdę to rozwiązałeś. Będę studiował polecenie, aby dowiedzieć się, jak to działa.
pxoto
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.