我已经把我的图像转换成一个csv文件,它就像一个矩阵,但我希望它是一个单行。我如何才能把所有的图像在数据集中转换成一个csv文件(每个图像成一行)。
下面是我使用的代码:
from PIL import Image
import numpy as np
import os, os.path, time
format='.jpg'
myDir = "Lotus1"
def createFileList(myDir, format='.jpg'):
fileList = []
print(myDir)
for root, dirs, files in os.walk(myDir, topdown=False):
for name in files:
if name.endswith(format):
fullName = os.path.join(root, name)
fileList.append(fullName)
return fileList
fileList = createFileList(myDir)
fileFormat='.jpg'
for fileFormat in fileList:
format = '.jpg'
# get original image parameters...
width, height = fileList.size
format = fileList.format
mode = fileList.mode
# Make image Greyscale
img_grey = fileList.convert('L')
# Save Greyscale values
value = np.asarray(fileList.getdata(),dtype=np.float64).reshape((fileList.size[1],fileList.size[0]))
np.savetxt("img_pixels.csv", value, delimiter=',')
输入:http://uupload.ir/files/pto0_lotus1_1.jpg
输出:http://uupload.ir/files/huwh_output.png
5条答案
按热度按时间tpgth1q71#
从你的问题来看,我认为你想知道
numpy.flatten()
。你想添加它将把数组展平到只有一个维度,然后打印成一行。
你的问题的其余部分是不清楚的位,它意味着你有一个充满jpeg图像的目录,你想要一种方法来读取它们。所以首先,得到一个文件列表:
用
for fileName in fileList:
包围代码编辑以添加完整的示例请注意,我使用了csv writer并将float 64更改为int(这应该可以,因为像素数据为0-255
inn6fuwd2#
如何将您的图像转换为2D numpy数组,然后将它们写入带有**.csv扩展名和,**作为分隔符的txt文件?
你可以使用如下代码:
but5z9lq3#
q1qsirdb4#
ef1yzkbh5#