カワリモノ息子の技術メモ的な~

カワリモノ息子とその母の技術メモ的な〜

学校が苦手な息子くんの作品とその母の作品、はたまた日常などいろいろを在宅エンジニア母が綴る

小6息子くんアスキーアート動画コンバーターを作る

皆さん、アスキーアートわかりますか?
   ∧,,∧
   (・ω・`) /| 
 /くT ̄ ̄二=二] 三二─
  ̄ ̄ ̄\二\
一般的なアスキーアート(通称AA)はこんなのなんですが、
「画像のドットをを文字に変換(画数の違いで濃淡を演出)したもの」(←※1)もアスキーアートというらしいです。
息子くんに教えてもらいました。

この用語の定義について調べてみると、アスキーアートとも呼ぶしテキストアートとも呼ぶらしいですね。
もはやアスキーアートアスキーコードであろうとなかろうと関係ないらしいです。

※1
言葉で書いても意味がよくわからないかもですね。
実際こんなやつです。

f:id:toriko0413:20190927232321p:plain

一部を拡大すると・・・

f:id:toriko0413:20190927232348p:plain

「5」とか「A」とか文字で作られているのわかりますか?

ご存知の方いらっしゃるかどうかですが、これ、むかーし流行りましたねえ。
自分自身が画像処理とか勉強してた大学に通ってたということもあるから、一般的には流行ってたかどうか謎ですが。

画像コンバーター

ことのはじまりは画像ファイルをテキストのアスキーアートに変換するpythonのコードをみつけたところから。

dev.to

これを見ておもしろい!と思った息子くんは早速このソースコードを流用して作ってみたそうなんです。
で、変換した画像が、↑※1の画像ですね。

このソースコード

# replace each pixel with a character from array
chars = ["B","S","#","&","@","$","%","*","!",":","."]

画像のドットの濃淡を見て、上記の文字に差し替えてるんですね。

これを動画に応用

これを応用して、動画のアスキーアートコンバーターを作成していました。

以下のように作成したそうです。
1.動画からフレームレートを指定してffmpegで画像を取り出す。
  フレームレートというのは、1秒間を何枚の画像にするかの単位ですね。

2.切り出した画像ファイルに対してアスキーアート変換処理(前述のソースコードの内容)を行う。

3.画像をまた動画に戻します。1と逆の処理。

  ちなみに、この記事↓でGoogle Earth Studioで作成した画像から動画の作成の時は3の処理してます。
siroitori.hatenablog.com

できあがった動画がこちら

元動画は息子くんのとてもお世話になっている福岡のプログラミング教室「ITeens Lab.」(アイティーンズラボ)からお借りしました♪
iteenslab.com

子供の意思・個性を尊重して一般的な「プログラミング教室」という型にはまらず好きなことをのびのびさせてくれる教室です。
うちとかもうアレなんで、自己流で好きな開発を黙々と(?)やってる感じみたいです。
もう通ってわりと長く、小学校は大の苦手な息子くんですがこの教室は大好きなんです。

学校に行けてないので同世代の子と触れ合うことがあまりない環境で(まぁ本人もあまり他人に興味がないというのもあるけど…)子供たちの中で活動する貴重な場なんです。ほんとありがたい・・・!

こちらが変換前のオリジナル動画↓


さらに面白いことがありました

そうそう、作成手順2の変換処理をコマンドプロンプトから行ったとき、おもしろい発見がありました。

コマンドプロンプトに変換した文字をデバッグ出力してたら、あれっ、これ調整したらコマンドプロンプトでも動画見れるんじゃね?ってなったらしいです。

文字の折り返しが無く1行が画面に収まるようにコマンドプロンプトの調整が必要です。

実行したら、こうなりました。

コマンドプロンプトで見ることができる動画!おもしろーい!

ただし息子くんいわく、性能低いPCだとスローモーション動画になるよって言ってました。

追記

現状、この動画コンバーターはとてもコンバート時間がかかると。
改善したいということで、OpenGLを用いたコンバートをしようと実装したそうなんです。

しかし、OpenGLでコンバート処理するとフォントの種類が指定できない??とかだったそうで、等幅フォントでないフォントが使用されて画像ががたがたになってしまったらしく。
2~3時間かけて作ったコードが使い物にならなかった!と憤慨してました。

OpenGLて、あーた、私が大学の卒業研究で使ってたやつなんですけど。
我が息子ながら感心してしまいます。



スター・はてブとても嬉しいです!