こんにちは、ぱそきいろです。
社会人になったのですが、コロナの影響で在宅研修になりました。
0秒で帰社出来るので、余った時間でプログラミングで遊んでいます。
今回はpython+OpenCVでモザイクアートを作りました。
(遊戯王はシンクロ前までしか分かりません!)
よろしくお願いします!
製作物
出来上がったものは以下です。
闇遊戯をモザイクアートにします。
元画像
モザイクアート
画像が荒くて申し訳ないのです、、、
拡大すると遊戯王カードでできています。
拡大
ちなみに、使ったカードは遊戯デッキに入ってそうなカードを選んでいますw
(遊戯が使いそうなシンクロモンスター分かんなくてスターダストドラゴンを入れてます、、)
(そして、遊戯といえば死者蘇生やった、、、大ミス、、、、)
モザイクアート作成の手順
モザイクアートを作るために以下の手順を踏みます。
- モザイクアートに使うカードを同じ大きさに揃える
- 画像を縦横比 3:2 に分割する(分割した画像をセルと呼びます)
- セルのピクセル毎に一番似ているカードの種類を決める
- 同じセル内に一番多いカードの種類に置き換える
2. の一番似ているカードの種類は以下の方法で判定します。
まず、カードの種類ごとに代表の色のRGBを決定します。
私はMacを使ってるので Digital Color Meterを使ってRGBを調べます。
例えばトラップカードならこんな感じです。
(ここでは、R:131 G:25 B:94)
次に対象のピクセルに対して、カードの種類毎に二乗和をとり、最小となるカード種類を調べます。
gitにコードを載せます。
コードが汚いのは許してください。。。
作ったもの
次に作ったモザイクアートを載せます。
海馬瀬戸
ブルーアイズホワイトドラゴン
(拡大したら分かりますが、ブルーアイズ関連のカードでできてます)
ブラックマジシャン
(あまりきれいにできなかった。。。)
カードの裏側
(これもあまりきれいにできなかった。。。)
まとめ
お分かりかと思いますが、カードをいっぱい使っているので、完成したモザイクアートは容量がすごく大きいです。
(大体5MBくらいあります。。。)
ただ、使うカードを少なくすると、モザイクアートの再現度が下がるし、、、
いい方法があったら教えてください。
ありがとうございました。