web-dev-qa-db-ja.com

画像をnumpyndarrayとして直接開く/ロードする

以前は、ファイルからndarrayに画像を直接ロードするscipyを使用していました。

from scipy import misc
img = misc.imread('./myimage.jpg')
type(img)
>>> numpy.ndarray

しかし、今ではDeprecationWarningドキュメントによると1.2.0で削除されるとのことです。 なので、代わりにimageio.imreadを使用する必要があります。だが:

import imageio
img = imageio.imread('./myimage.jpg')
type(img)
>>> imageio.core.util.Image

私はそれを行うことによってそれを変換することができます

img = numpy.array(img)

しかし、これはハッキーのようです。以前にscipyのmisc.imreadで行っていたように(OpenCVを使用する以外に)画像を直接numpy配列にロードする方法はありますか?

7
Nic

_imageio.imread_の結果はすでにNumPy配列です。 _imageio.core.util.Image_は、主に存在するndarrayサブクラスであるため、配列は画像メタデータを保持するmeta属性を持つことができます。

正確に_numpy.ndarray_型のオブジェクトが必要な場合は、asarrayを使用できます。

_array = numpy.asarray(img)
_

numpy.array(img)とは異なり、これはimgのデータをコピーしません。