2022/06/26(日) [n年前の日記]
#1 [python][cg_tools] ディザリング処理をするプログラムをPythonに移植中
任意のパレットを指定してディザリングをかけるサンプルプログラム群を ―― C++ で書かれてるソレを Python で書き直しているところ。
_Arbitrary-palette positional dithering algorithm
C/C++ で書くと処理が速いプログラムになるけれど、ソースがちょっと分かりづらくて魔改造しにくい。例えば、RGB値を取り出すために、ビットシフトして0x0ffでand、とかやらないといけない。そんな部分があちこちに出てくるけれど、それってアルゴリズムの本質的な部分ではないよなと…。これがPythonだったら、(r, g, b) といった感じで、タプルで渡せば済んじゃうので、ざっと眺めても分かりやすいソースになる。まあ、処理は遅くなるだろうけど…。Python は遅いし…。
そんなことを思って書き直し始めたのけど。動作確認してみたら、C++版と比べてとんでもなく処理時間がかかるようになってしまった。これはプログレスバーか何かを表示しておかないとあかんなと…。
_Arbitrary-palette positional dithering algorithm
C/C++ で書くと処理が速いプログラムになるけれど、ソースがちょっと分かりづらくて魔改造しにくい。例えば、RGB値を取り出すために、ビットシフトして0x0ffでand、とかやらないといけない。そんな部分があちこちに出てくるけれど、それってアルゴリズムの本質的な部分ではないよなと…。これがPythonだったら、(r, g, b) といった感じで、タプルで渡せば済んじゃうので、ざっと眺めても分かりやすいソースになる。まあ、処理は遅くなるだろうけど…。Python は遅いし…。
そんなことを思って書き直し始めたのけど。動作確認してみたら、C++版と比べてとんでもなく処理時間がかかるようになってしまった。これはプログレスバーか何かを表示しておかないとあかんなと…。
◎ CUIでプログレスバーを表示したい。 :
CUIでプログレスバーを出したい。tqdm というモジュールが便利らしい。
Python 3.9.13 x64 上で導入してみたけど、Windows10 x64 21H2 + DOS窓/ConEmu では、そのままだと正常表示されなかった。tqdm(... ,ascii=True) をつけて、ASCIIコードのみで出力すれば改善される模様。
以下、参考ページ。
_Pythonで進捗バーを表示する(tqdm) - Narito Blog
_Tqdm Issues and Tips - jdhao's digital space
_Wrong output in Windows console - Issue #454 - tqdm/tqdm
pip install tqdm
Python 3.9.13 x64 上で導入してみたけど、Windows10 x64 21H2 + DOS窓/ConEmu では、そのままだと正常表示されなかった。tqdm(... ,ascii=True) をつけて、ASCIIコードのみで出力すれば改善される模様。
from tqdm import tqdm for i in tqdm(range(100), ascii=True): hoge()
以下、参考ページ。
_Pythonで進捗バーを表示する(tqdm) - Narito Blog
_Tqdm Issues and Tips - jdhao's digital space
_Wrong output in Windows console - Issue #454 - tqdm/tqdm
[ ツッコむ ]
以上です。