"""
Summary:
樽型歪み画像をシミュレートするコード例です。
Args:
path: 顔画像ファイルが含まれる対象ディレクトリへのパス。
size: 解像度の指定。Default is 224px.
Example:
.. code-block:: bash
python3 example/distort_barrel.py path size
.. code-block:: python
# 初期化
CONFIG: Dict = Initialize('JAPANESE_FACE_V1_MODEL_GUI', 'info').initialize()
# ロガーの設定
logger = Logger(CONFIG['log_level']).logger(__file__, CONFIG['RootDir'])
.. image:: ../assets/images/one_point_L.png
:width: 70%
:alt: one point
この2行はお約束ですね⭐️''
1行目は設定ファイルを読み込み、2行目でロガーを指定しています💗
Source code:
`distort_barrel.py <https://github.com/yKesamaru/FACE01_DEV/blob/master/example/distort_barrel.py>`_
"""
import os
import sys
dir: str = os.path.dirname(__file__)
parent_dir, _ = os.path.split(dir)
sys.path.append(parent_dir)
from typing import Dict
from tqdm import tqdm
from face01lib.Initialize import Initialize
from face01lib.logger import Logger
# Operate directory: Common to all examples
from face01lib.utils import Utils
[ドキュメント]
def main(
dir_path: str,
align_and_resize_bool: bool = False,
size: int=224,
padding: float=0.1,
initial_value: float = -0.1,
closing_value: float = 0.1,
step_value: float = 0.1
) -> None:
"""
このシンプルなコード例では、拡張子がpng, jpg, jpeg画像を含むディレクトリのパスを受け取り、樽型歪み処理をして、それらを保存します。
See also:
`Tokai-kaoninsho:レンズの歪曲収差と対応方法(6) <https://tokai-kaoninsho.com/%e3%82%b3%e3%83%a9%e3%83%a0/%e3%83%ac%e3%83%b3%e3%82%ba%e3%81%ae%e6%ad%aa%e6%9b%b2%e5%8f%8e%e5%b7%ae%e3%81%a8%e5%af%be%e5%bf%9c%e6%96%b9%e6%b3%956/>`_
Args:
path (str): 絶対パス: 例えば"~/bin/FACE01_DEV/assets/data"
align_and_resize_bool (bool, optional): Whether to align and resize. Defaults to False.
size (int, optional): Width and height. Defaults to 224.
initial_value (float): Initial value. Default is -0.05.
closing_value (float): Closing value. Default is 0.05.
step_value (float): Step value. Default is 0.05.
Returns:
None
.. note::
システムにImageMagickがインストールされていなければ正常動作しません。
- See `ImageMagick <https://imagemagick.org/script/download.php>`_
Result:
.. image:: ../docs/img/distort_barrel.png
:scale: 70%
:alt: distort_barrel
Image:
`Pakutasoハート型のチョコと指ハートの無料写真素材 <https://www.pakutaso.com/20220158028post-38602.html>`_
"""
os.chdir(dir_path)
# pathディレクトリをrootとして、pathディレクトリ以下のディレクトリを取得
dir_list = os.listdir(dir_path)
for dir in tqdm(dir_list):
utils.distort_barrel(
dir,
align_and_resize_bool,
size,
padding,
initial_value,
closing_value,
step_value
)
if __name__ == '__main__':
# Initialize
CONFIG: Dict = Initialize(
'JAPANESE_FACE_V1_MODEL_GUI', 'info').initialize()
# Set up logger
logger = Logger(CONFIG['log_level']).logger(__file__, CONFIG['RootDir'])
utils = Utils(CONFIG['log_level'])
args: list = sys.argv
os.chdir(args[1])
main(
dir_path=args[1],
align_and_resize_bool=False,
size=512,
padding=0.1,
initial_value=-0.1,
closing_value=0.1,
step_value=0.1
)