MXNet Image IO

Image.open格式<—>矩阵

image.open转矩阵

img = Image.open('lena.png')
img1 = np.array(img)  

矩阵转 image.open

Image.fromarray(img1 ) 

字节bytes<—>image.open格式以及矩阵格式

有的图片读入方式以.read(),读入之后为Bytes类型。

def get_file_content(filePath):
    with open(filePath, 'rb') as fp:
        return fp.read()

转换为图像格式以及array格式该怎么操作(BytesIO字节读入函数):

 # 转image.open格式——常规
from PIL import Image, ImageDraw, ImageFont
from io import BytesIO
import numpy as np
Image.open(BytesIO(get_file_content(pic_path)))
    # 转成array格式——常规
np.array(Image.open(BytesIO(get_file_content(pic_path))))

Mxnet的数据格式为NDArray,当需要读取可观看的数据,就要调用

numpy_d = d.asnumpy()

加载原始图像

mx.image.imdecode 可以加载图像。imdecode 提供了与OpenCV 类似的界面。

注意:你仍然需要安装OpenCV 来使用mx.image.imdecode(而不是CV2 Python库)

path ='data/test_images/ILSVRC2012_val_00000001.JPEG'
img = mx.image.imdecode(open(path, 'rb').read())
plt.imshow(img.asnumpy()); 
plt.show()

一些np的小函数:

img = img.astype(np.float16)    #对于图像转位深很好用。

.index()函数:

返回列表中某元素第一次出现的位置(索引值)

a = [1, 2, 8, 4]

b = a.index(8)   

:2  #索引值为2.

MXNet源码解读:数据读取高级类(1)—mxnet.io.MXDataIter

Image IO

在本节中,我们将学习如何在MXNet中预处理和加载图像数据。

在MXNet中加载图像数据有4种方式。

  1. 使用 mx.image.imdecode 加载原始数据文件
  2. 使用在Python中实现的mx.img.ImageIter ,很方便自定义。 它可以从.rec(RecordIO)文件和原始图像文件读取。
  3. 使用C ++实现的MXNet后端的mx.io.ImageRecordIter 。 对于自定义不太灵活,但提供了多种语言绑定。
  4. 创建自定义的迭代器,继承mx.io.DataIter

Ref: python︱matplotlib使用(读入、显示、写出、opencv混用、格式转换...)

猜你喜欢

转载自blog.csdn.net/tony2278/article/details/83748145
今日推荐