reference:https://mxnet.incubator.apache.org/api/python/image/image.html#mxnet.image.imread
注意这里不是gluon的函数
- mxnet.image.imdecode和mxnet.image.imread的区别
二者都是使用C++的opencv对图像进行处理,imdecode将图片解码为NDarray,而在此前需要读入图片。imread直接读入并解码图片。二者都可以设置flag=0读入灰度图片,设置to_rgb=0保持原本的bgr格式(opencv)。
读进的图片都是0~255, shape = (H, W, C)。而输入gluon的网络需要0~1, shape = (n, C, H, W), 在输入网络之前需要经过转换
img = mxnet.image.imdecode(open("dog.jpg", "rb").read())
img = mxnet.image.imread("dog.jpg")
def transform(data): # Imagenet pretrained model
data = data.transpose((2, 0, 1)).expand_dims(axis = 0)
rgb_mean = nd.array([0.485, 0.456, 0.406]).reshape(1, 3, 1, 1)
rgb_std = nd.array([0.229, 0.224, 0.225]).reshape(1, 3, 1, 1)
return (data.astype('float32') / 255 - rgb_mean) / rgb_std
input_image = transform(img)#此后这里可以直接输入gluon网络
-
cv2.imread和mxnet.image.imread的区别
前者使用cv2,后者使用c++版本的opencv。前者读取结果是numpy array,后者读取结果是nd.array。前者通道为bgr,后者默认是rgb。 -
mxnet.image.resize, mxnet.image.resize_short
前者是强行resize,后者是按比例将短边resize到指定大小。 -
mxnet.image.scale_down
如果在crop的时候,w/h大于了图片的w/h,就按比例调整crop的大小。 -
mxnet.image.color_normalize(src, mean, std = None)
根据mean和std对图片进行normalize,RGB顺序的NDarray