見出し画像

それっぽい鳥さんの画像をつくる方法に関する話

皆さんこんにちは。絵が絶望的に苦手な者です。そんな私でもサムネのような画像を作れるようになりましたので、ここにその方法をまとめてみたいと思います。
そんなのフリーソフトであるわと思われた方、まあ自分で作るのが楽しいんですよと言い訳をさせていただきます。

0,Pythonをインストールし、画像処理に関するライブラリを入れる
早速絵じゃないんかいという事ですが、当然絵は描けませんので写真をそれっぽくすることに力を入れていきます。
今回利用したのはOpenCVとnumpyです。またGUI用に(無駄に)Tkinterを利用しています。それぞれのインストール方法はネットの海に無限に存在しますので、割愛させていただきます。

1,絵っぽくするにはどうすればいいか考える
これがうーんと思う点の一つなのですが、やっぱり個人的には階調を下げてあげることが一つの方針になるのでは?と思います。基本的にカメラはRGBが14bitとか16bitとかありますので赤だけで2^16のグラデーションを作ることができるのですね。白が200色どころではありません。
実際我々が見ている者はアナログの世界ですので、基本的に無限に階調が存在しており、細かくなればなるほどリアルに近づくわけです。
じゃあ逆に階調を減らせばいんでね?と単純に思ってしまったというわけでございます。

2,早速完成図を書いてしまう
1でまあ画像の階調を減らせばOKという事が決まりましたので、早速どんな感じのプログラムになればいいのか考えてみました。ソフト屋さんではありませんので詳細は分かりませんが、こんな感じのものがいいなーと

階調を何段階にすればいいのかおそらく写真ごとに変わってくると思いますので、ボタンをポチポチして編集前後の画像を比較しながら調整できるやつが欲しい…
後はこれが動作するように調べてCtrl+CとVで大体できてしまうのではないでしょうか?

3,実装する

一番問題になるのはそもそも何を使えばこれが実装できるのか?というところだと思います。例えばGUIってpythonでどーやればいいのだろうか?とかとか始めたての頃は思っておりました。
便利不便色々ご意見あるかと思いますが、個人的に利用しているのは
画像関連=OpenCV
行列(画像)の計算=numpy
GUI関連=tkinter
と思っておりますので、色を変えたいなーと思ったら画像ファイル内の数字を変えるので"numpy 数値 置換 比較"とかで調べればOKですし、画像データの読み込み、保存については"OpenCV 画像 保存 読み込み"とかで調べてみれば大体OKです。

4,使ってみる
という事でここまでで何とか形になったと思いますので早速利用してみましょう。プログラムを実行するとこんな感じ。

入力欄に画像のファイル名を入力して画像を読み込むボタンを押し、階調を増やす減らすボタンをポチポチするとこんな感じの画面になると思います。

画像の種類によってはうまくいかないのですが、いい感じに設定できると絵っぽく見えないですか?そうでもないか…
という事でこれを使ってみた結果をつらつらアップして今回の記事は終了とさせていただきます。ありがとうございました。


参考文献:2024/5/24参照
ttps://note.nkmk.me/python-opencv-imread-imwrite/
ttps://self-development.info/%E3%80%90python%E3%80%91tkinter%E3%81%AB%E3%82%88%E3%82%8B%E7%94%BB%E5%83%8F%E8%A1%A8%E7%A4%BA%E3%82%92%E3%82%8F%E3%81%8B%E3%82%8A%E3%82%84%E3%81%99%E3%81%8F%E8%A7%A3%E8%AA%AC/
ttps://ossa2019.stars.ne.jp/Remember/tkinter/tk4.html
ttps://camp.trainocate.co.jp/magazine/python-class/
ttps://qiita.com/michimichix521/items/4d8721aaa59e1c913d9a
ttps://www.python-beginners.com/entry/20210517/1621242000#section1
ttps://ossa2019.stars.ne.jp/Remember/tkinter/tk11.html
ttps://nnahito.gitbooks.io/tkinter/content/helloworld/30e9-30d9-30eb-3092-shi-3063-3066-307f-308b/30e9-30d9-30eb-306e-wei-zhi-3092-ren-yi-306b-bian-geng-3057-3066-307f-308b.html
ttps://www.codevace.com/py-opencv-show-image/
ttps://www.codevace.com/py-opencv-resize/
ttps://qiita.com/Kazuhito/items/b2ebd9f9010f1ffcac5b
ttps://dev.classmethod.jp/articles/open-and-close-an-image-in-a-window-in-opencv/
ttps://note.nkmk.me/python-numpy-where/
ttps://qiita.com/Kaz_K/items/a3d619b9e670e689b6db
ttps://note.nkmk.me/python-opencv-imread-imwrite/

この記事が気に入ったらサポートをしてみませんか?