filesystem draw_annotation

Description

アノテーションzip、またはそれを展開したディレクトリに存在するアノテーションを描画します。

Examples

基本的な使い方

--annotation には、Annofabからダウンロードしたアノテーションzipか、アノテーションzipを展開したディレクトリを指定してください。 アノテーションzipは、annofabcli annotation download コマンドでダウンロードできます。

# アノテーションzipをダウンロードする。
$ annofabcli annotation download --project_id prj1 --output annotation.zip

--image_dir には、画像が格納されているディレクトリを指定してください。 --input_data_id_csv には、input_data_idと画像ファイルを紐付けたCSVを指定してください。

CSVのフォーマットは以下の通りです。

  • カンマ区切り

  • ヘッダ行なし

列番号

名前

必須

備考

1列目

input_data_id

Yes

2列目

image_path

Yes

--image_dir に指定したディレクトリからのパス

以下はCSVファイルのサンプルです。

input_data_id.csv
input_data_id1,image1.png
input_data_id2,image2.png
input_data_id3,image3.png
...
image/
├── image1.png
├── image2.png
...
$ annofabcli filesystem draw_annotation  --annotation annotation.zip \
--image_dir image/ \
--input_data_id_csv input_data_id.csv \
--output_dir out/

ディレクトリ out には、描画されたアノテーションの画像が出力されます。ディレクトリ構成はアノテーションzipと同じです。ファイル名は {入力データID}.{拡張子} です。

out/
├── task1/
│   ├── input_data_id_1.png
│   ├── input_data_id_2.png
├── task2/
│   ├── input_data_id_3.png
│   ├── input_data_id_4.png
...
../../_images/output_image.png

アノテーションのみを描画する

アノテーションのみを描画する場合は、--default_image_size を指定してください。

$ annofabcli filesystem draw_annotation  --annotation annotation.zip \
--default_image_size 1280x720 \
--output_dir out/

ポリラインの描画方法

アノテーションzip内のJSONでは、ポリゴンアノテーションとポリラインアノテーションを区別することができません。 デフォルトでは「ポリゴン」とみなして描画するため、ポリラインとして描画するには、「ポリラインのラベル」を指定する必要があります。

$ annofabcli filesystem draw_annotation  --annotation annotation.zip \
--image_dir image/ \
--input_data_id_csv input_data_id.csv \
--output_dir out/ \
--polyline_label fish

警告

このオプションはアノテーションzipの課題を解決するための、暫定的なオプションです。 アノテーションzipでポリゴンかポリラインかを判断できるようになれば、このオプションは削除する予定です。

描画対象のアノテーションの絞り込み

描画対象のアノテーションを絞り込む場合は、--label_name に描画対象のラベル名を指定してください。

$ annofabcli filesystem draw_annotation  --annotation annotation.zip \
--image_dir image/ \
--input_data_id_csv input_data_id.csv \
--output_dir out/
--label_name car bike

色の指定

描画するアノテーションの色を指定する場合は、 --label_color にラベル名と色の対応関係をJSON形式で指定してください。

$ annofabcli filesystem draw_annotation  --annotation annotation.zip \
--image_dir image/ \
--input_data_id_csv input_data_id.csv \
--output_dir out/
--label_color '{"dog":"red", "cat":"blue"}'

「色」は、以下のフォーマットをサポートしています。 フォーマットの詳細は、Pillow - ImageColor Module を参照してください。

  • HTML color names: "red"

  • 16進数: "#add8e6"

  • 10進数(文字列): "rgb(0, 0, 255)"

  • 10進数(リスト): [0, 0, 255]

アノテーション仕様画面で設定されている色を指定する場合は、annofabcli annotation_specs list_label_color コマンドの出力結果を使用してください。

$ annofabcli annotation_specs list_label_color --project_id prj1 --output label_color.json

$ cat label_color.json
{
    "cat": [
        255,
        0,
        0
    ],
    "dog": [
        0,
        255,
        0
    ],
    // ...
}

$ annofabcli filesystem draw_annotation  --annotation annotation.zip \
--image_dir image/ \
--input_data_id_csv input_data_id.csv \
--output_dir out/
--label_color file://label_color.json

描画オプション

--drawing_options で、描画オプションをJSON形式で指定できます。利用できるキーは以下の通りです。

  • line_width : 線の太さ[pixel]

$ annofabcli filesystem draw_annotation  --annotation annotation.zip \
--image_dir image/ \
--input_data_id_csv input_data_id.csv \
--output_dir out/
--drawing_options '{"line_width": 3}'

タスクの絞り込み

描画対象のタスクを指定する場合は、--task_id に描画対象タスクのtask_idを指定してください。

$ annofabcli filesystem draw_annotation  --annotation annotation.zip \
--image_dir image/ \
--input_data_id_csv input_data_id.csv \
--output_dir out/
--task_id task1 task2

--task_query を指定して、タスクのフェーズやステータスで絞り込むことができます。

$ annofabcli filesystem filter_annotation  --annotation annotation.zip \
--task_query '{"status":"complete"}' \
--output_dir out/

--task_query の詳細は、Command line options を参照してください。

Usage Details

画像にアノテーションを描画します。

usage: annofabcli filesystem draw_annotation [-h] [--yes]
                                             [--endpoint_url ENDPOINT_URL]
                                             [--logdir LOGDIR] [--disable_log]
                                             [--debug] --annotation ANNOTATION
                                             [--image_dir IMAGE_DIR]
                                             [--input_data_id_csv INPUT_DATA_ID_CSV]
                                             [--default_image_size DEFAULT_IMAGE_SIZE]
                                             [--label_color LABEL_COLOR] -o
                                             OUTPUT_DIR
                                             [--label_name LABEL_NAME [LABEL_NAME ...]]
                                             [--polyline_label POLYLINE_LABEL [POLYLINE_LABEL ...]]
                                             [--drawing_options DRAWING_OPTIONS]
                                             [-t TASK_ID [TASK_ID ...]]
                                             [-tq TASK_QUERY]

Named Arguments

--annotation

Annofabからダウンロードしたアノテーションzip、またはzipを展開したディレクトリを指定してください。

--image_dir

画像が存在するディレクトリを指定してください。 '--input_data_id_csv'を指定したときは必須です。

--input_data_id_csv

input_data_id--image_dir 配下の画像ファイルを紐付けたCSVを指定してください。 --default_image_size を指定しないときは必須です。 CSVのフォーマットは、「1列目:input_data_id, 2列目:画像ファイルのパス」です。 詳細は https://annofab-cli.readthedocs.io/ja/latest/command_reference/filesystem/draw_annotation.html を参照してください。

--default_image_size

デフォルトの画像サイズ。 --input_data_id_csv を指定しないときは必須です。 (例) 1280x720

--label_color

label_nameとRGBの関係をJSON形式で指定します。 (例) {"dog": [255, 128, 64], "cat": "blue"} file:// を先頭に付けると、JSON形式のファイルを指定できます。

-o, --output_dir

出力先ディレクトリのパスを指定してください。ディレクトリの構造はアノテーションzipと同じです。

--label_name

描画対象のアノテーションのlabel_nameを指定します。指定しない場合は、すべてのlabel_nameが描画対象になります。 file:// を先頭に付けると、label_name の一覧が記載されたファイルを指定できます。

--polyline_label

ポリラインのlabel_nameを指定してください。2021/07時点ではアノテーションzipからポリラインかポリゴンか判断できないため、コマンドライン引数からポリラインのlabel_nameを指定する必要があります。 file:// を先頭に付けると、label_name の一覧が記載されたファイルを指定できます。 【注意】アノテーションzipでポリラインかポリゴンかを判断できるようになれば、このオプションは削除する予定です。

--drawing_options

描画オプションをJSON形式で指定します。 (例) {"line_width": 3}

file:// を先頭に付けると、JSON形式のファイルを指定できます。

-t, --task_id

描画対象であるタスクのtask_idを指定します。指定しない場合、すべてのタスクに含まれるアノテーションが描画されます。 file:// を先頭に付けると、task_idの一覧が記載されたファイルを指定できます。

-tq, --task_query

描画対象のタスクを絞り込むためのクエリ条件をJSON形式で指定します。 使用できるキーは task_id, status, phase, phase_stage です。 file:// を先頭に付けると、JSON形式のファイルを指定できます。

global optional arguments

--yes

処理中に現れる問い合わせに対して、常に yes と回答します。

--endpoint_url

Annofab WebAPIのエンドポイントを指定します。

Default: "https://annofab.com"

--logdir

ログファイルを保存するディレクトリを指定します。

Default: .log

--disable_log

ログを無効にします。

--debug

HTTPリクエストの内容やレスポンスのステータスコードなど、デバッグ用のログが出力されます。