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