Python 3.5.1 从 PixelAccess 对象到 CSV 数据集
Python 3.5.1 from PixelAcces Objects to CSV dataset
我正在 Python 开展一个项目,内容是拍摄图像,然后使用统计方法分析这些图像。
我是 Python 的(非常)新手,因此我在处理数据时遇到了问题。
我想将我的图像数据从 Python 导出为 csv 格式,以便更容易在另一个程序中进行分析。
因此,如果第一行中的第一个单元格具有 RGB 值 [100,50,200],那么我希望将其转换为 [100050200]。
我想我需要设置一个遍历所有单元格的循环。但是如何做到这一点以及如何使每个 R、G 和 B 值成为 3 位数字 - 我不知道。
from PIL import Image
im=Image.open('path.jpeg')
pixels=list(im.getdata())
然后我迷路了。非常感谢各种帮助。
这是 Michael Staniek 的回答
好的,您的 Raspberry 拍摄了您要转换为 CSV 文件的照片。它的工作方式是这样的:
from PIL import Image
import numpy
img=Image.open(pathtoimage)
imgarray=numpy.array(img)
您使用 PIL 打开文件,其中 returns 一个 img 对象,然后您可以将其转换为 numpy 数组。
数组将是 3 维的,因此它看起来像这样:
array([[[1, 2, 3],
[1, 2, 3],
[1, 2, 3]],
[[1, 2, 3],
[1, 2, 3],
[1, 2, 3]],
[[1, 2, 3],
[1, 2, 3],
[1, 2, 3]]])
然后您可以使用以下代码:
for row in imgarray:
outputstring=""
for column in row:
valuestring=""
for value in column:
if value < 10:
valuestring+="00"+str(value)
elif value < 100:
valuestring+="0"+str(value)
else:
valuestring+=str(value)
outputstring+=valuestring+";"
print(outputstring[:-1]) #excluding the last letter, because its a ;
这将为您提供以下结果:
001002003;001002003;001002003
001002003;001002003;001002003
001002003;001002003;001002003
我正在 Python 开展一个项目,内容是拍摄图像,然后使用统计方法分析这些图像。
我是 Python 的(非常)新手,因此我在处理数据时遇到了问题。
我想将我的图像数据从 Python 导出为 csv 格式,以便更容易在另一个程序中进行分析。
因此,如果第一行中的第一个单元格具有 RGB 值 [100,50,200],那么我希望将其转换为 [100050200]。
我想我需要设置一个遍历所有单元格的循环。但是如何做到这一点以及如何使每个 R、G 和 B 值成为 3 位数字 - 我不知道。
from PIL import Image
im=Image.open('path.jpeg')
pixels=list(im.getdata())
然后我迷路了。非常感谢各种帮助。
这是 Michael Staniek 的回答
好的,您的 Raspberry 拍摄了您要转换为 CSV 文件的照片。它的工作方式是这样的:
from PIL import Image
import numpy
img=Image.open(pathtoimage)
imgarray=numpy.array(img)
您使用 PIL 打开文件,其中 returns 一个 img 对象,然后您可以将其转换为 numpy 数组。 数组将是 3 维的,因此它看起来像这样:
array([[[1, 2, 3],
[1, 2, 3],
[1, 2, 3]],
[[1, 2, 3],
[1, 2, 3],
[1, 2, 3]],
[[1, 2, 3],
[1, 2, 3],
[1, 2, 3]]])
然后您可以使用以下代码:
for row in imgarray:
outputstring=""
for column in row:
valuestring=""
for value in column:
if value < 10:
valuestring+="00"+str(value)
elif value < 100:
valuestring+="0"+str(value)
else:
valuestring+=str(value)
outputstring+=valuestring+";"
print(outputstring[:-1]) #excluding the last letter, because its a ;
这将为您提供以下结果:
001002003;001002003;001002003 001002003;001002003;001002003 001002003;001002003;001002003