我有CSV文件,我需要提供给一个深度学习网络。目前,我的CSV文件大小为360*480,但网络限制它们的大小为224*224。我正在使用Python和Keras作为深度学习部分。那么我如何调整矩阵的大小呢?
我在想,既然高宽比是3:4,所以如果我把它们调整到224:(224*4/3) = 224:299,然后将矩阵的宽度裁剪到224,就可以达到这个目的。但我找不到合适的功能来做到这一点。请建议一下。
发布于 2018-08-15 22:40:02
我找到了一个简短而简单的方法来解决这个问题。这使用Python /https://pillow.readthedocs.io/en/latest/reference/Image.html/。
import numpy as np
import pylab as pl
from PIL import Image
matrix = np.array(list(csv.reader(open('./path/mat.csv', "r"), delimiter=","))).astype("uint8") #read csv
imgObj = Image.fromarray(matrix) #convert matrix to Image object
resized_imgObj = img.resize((224,224)) #resize Image object
imgObj.show()
resized_imgObj.show()
resized_matrix = np.asarray(img) #convert Image object to matrix
虽然numpy模块也有一个调整尺寸函数,但是它没有前面提到的方法那么有用。
当我尝试的时候,调整大小的矩阵已经失去了原始矩阵的所有复杂和美学方面。这可能是因为numpy.ndarray.resize 没有插值,而缺失的条目中填充了零。
因此,对于这种情况,Image.resize()更有用。
发布于 2018-08-14 11:22:55
如果你使用图片,我想你是在找cv.resize()。如果没有,请尝试numpy.ndarray.resize()
发布于 2018-08-14 12:03:23
图像处理
如果您想要对数据进行非平凡的图像更改(例如,在像素值之间进行插值,假设它们表示照片),那么您可能希望为此使用适当的图像处理库。您不需要将它们视为原始矩阵(数字的csv),而是将它们转换为rgb图像,进行您想要的转换,并将它们转换回一个numpy矩阵。
OpenCV (transformations.html)或Pillow (https://pillow.readthedocs.io/en/3.1.x/reference/Image.html)可能对此很有用。
https://stackoverflow.com/questions/51848406
复制相似问题