Генератор випадкових зображень


14

Я генерую випадкові дані та намагаюся перетворити їх у зображення PNG, використовуючи:

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:-

Ця команда завжди показує сіруватий образ із деякими пікселями RGB. Що я роблю неправильно?

Моя остаточна мета - генерувати хоча б одне зображення зі випадковими даними.


Визначте "випадковий". Візуальне середнє згусток випадкових значень RGB буде врешті-решт спрямоване на сіре.
Wildcard

Це я вважав, але не зміг підтвердити цю теорію, оскільки кожна картина виглядає майже однаково.
pxoto

15 років тому я робив щось подібне в Basic (Chipmunk Basic, якщо бути конкретним). У мене було невелике графічне вікно і я постійно виводив піксель випадкового кольору у випадкове місце. Результатом стала картина, що постійно змінюється, яка все ще виглядала практично однаково - як кольорова статика на старомодному телевізорі. Це насправді не сірий, але кольоровий статичний .
Wildcard

Мені вдалося створити статичні, але зображення в основному залишаються сірими.
pxoto

Відповіді:


17

По-перше, вам потрібно подавати display RGB:-необроблені байти, а не закодовану шістнадцяткову рядок, як ви будуєте з цим hexdump | sed | trконвеєром.

По-друге, ви не даєте йому достатньо байтів: вам потрібно 3 байти на піксель, по одному на кожен кольоровий канал.

Це робить те, що ви хочете:

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

Щоб зберегти безпосередньо в PNG, ви можете зробити це:

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

Ось типове вихідне зображення:

RGB-зображення, сформоване з / dev / urandom


Якщо ви хочете зробити анімацію, не потрібно створювати та зберігати окремі кадри. Ви можете подавати сирий потік байтів прямо у ffmpeg / avconv, наприклад

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

Не можу повірити, що ти насправді вирішив, я вивчу команду, щоб з'ясувати, як вона працює.
pxoto
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.