0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

torchvisionのDatasetFolderでSVGを読み込む

Posted at

ImageFolderのようにベクター画像のSVGを読み込みたい。

💡アプローチ

  1. ImageFolderの親クラスDatasetFolderはloaderメソッドでファイルの読み込みロジックを定義しているので、SVG用のloaderメソッドsvg_loaderを作る。
  2. svg_loaderでは、読み込んだSVGファイルをcairosvgのsvg2pngでラスタ画像化。ラスタ画像化したデータをBytesIOとPillowを組み合わせてImageとしてロード。
  3. svg_loaderをDatasetFolderのインスタンス化の際にloaderに指定する。

📄コード

ecample.py

from PIL import Image
from io import BytesIO
from cairosvg import svg2png
from torchvision.datasets.folder import DatasetFolder

def svg_loader(path: Union[str, Path]) -> Image.Image:
  # svgからpngへ変換
  # (background_color="white"とか与えると背景色を指定できる。)
  png = svg2png(bytestring=svg_data)
  # Imageにして返す。
  return Image.open(BytesIO(png)).convert('RGB')
  
dataset = DatasetFolder(root=dataset_svg, loader=svg_loader, extensions=("svg"))

👍

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?