DashCanvas 画像の切り抜き
画像を表示したキャンバス上で輪郭を指定して、その範囲の画像の切り抜きを行ってみます。
superpixel_color_segmentation関数を使って、ペンシルツールで指定した輪郭の内側を切り抜いて表示します。
[ソースコード]
1 | import dash |
画像の背景を取り除く処理はremove_backgroundコールバック関数で行っています。(42行目)
入力項目は、画像へのアノテーションデータをもつjson_data属性と、画像データ文字列のimage_contents属性です。
処理の流れは以下の通りです。
- 画像データを取得し、numpy.ndarray型に変換する。(46~47行目)
- 画像へのアノテーションデータと画像の形状からブール値に変換する。(55行目)
- マスク処理したデータが存在する場合、superpixel_color_segmentation関数を使って類似した色を分割する。(60行目)
- 画像から3の結果を反転した領域を、白色(255.255.255)にする。(64行目)
- 処理した画像(numpy.ndarray)を文字列に変換する。(65行目)
[ブラウザで表示]
対象を選択しremoveボタンを押すと、選択範囲が切り抜かれてツールの下に表示される・・・・はずなんですがはっきり切り抜きできませんでした。
2回、3回同じ範囲を選択するとうまく切り抜かれていくようです。
改善の余地がありそうですね😥