固定サイズの2乗ウィンドウでさまざまな場所で画像を切り抜き、numpy配列を得るにはかなり長いループがあります。
私はcrop
からPIL
イメージライブラリを使用していました。それから私はnp.asarray
とnumpy
の配列としてそれを変換します。パッディング=切り取りを使った切り抜きの高速Python実装
from PIL import Image
import numpy as np
im=Image.open("image.png")
box=(left,top,left+width,top+width)
res=np.asarray(im.crop(box))
のみパディングが実装しかし(あなたの作物の中心が少ない境界線の幅/ 2よりもである)0で一定であると私はそれがnumpyのパッドドキュメントのようにパディングを「ラップ」になりたいです。
私の解決策は、このようなことです。
array=np.asarray(Image.open("image.png"))
padded_array=np.pad(array,((width/2,width/2),(width/2,width/2),(0,0)),"wrap")
res=padded_array[top+width/2:top+width/2+width,left+width/2:left+width/2+width]
もっと効率的なやり方があるのだろうかと思っていました。
ありがとうございます!私はこの機能を知らなかった。確かにそれは本当に高速ですが、私はチェックするつもりです。 – jean
取得しようとしているウィンドウの数とサイズによって異なります。パディングを使用する際の問題は、いくつかのウィンドウをパディングする必要があるかもしれないが、他のウィンドウはパディングする必要があるかもしれない(いくつかのラップアラートといくつかはしない)ので、すべてのウィンドウに対してパッキングする必要がある。 – Benjamin
はいいいえ、私はそれが再構成が無駄な詰め物に比べて取る時間までに沸騰すると思います。 – jean