我有一个带有图片的文件夹("C:\Users\Admin\Downloads\mypicture")
这里的例子
8
和2
我想像这样将其转换为像素数据帧
pixel1 pixel. pixel158 pixel159 pixel160 pixel161 pixel162 pixel163 pixel164 pixel165 pixel166 pixel167 pixel168 pixel169 pixel170 pixel171 pixel172
1 0 … 0 191 250 253 93 0 0 0 0 0 0 0 0 0 0
2 0 … 32 0 0 0 0 0 0 0 0 0 0 0 0 0 0
pixel173 pixel174 pixel175 pixel176
1 0 0 0 0
2 0 0 16 179
每个图像都表示为一行。每个图像的灰度范围在[0,255]范围内。 我这样做
img = mpimg.imread("C:\Users\Admin\Downloads\mypicture")
img = np.ravel(img)
df = pd.DataFrame([img])
但是我得到这个错误
SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes in position 2-3: truncated \UXXXXXXXX escape
如何在csv文件中获取所需的数据帧?
答案 0 :(得分:0)
您可以使用PIL库,通过从这样的图像中获取像素列表来将图像转换为像素数据帧
from PIL import Image
im = Image.open('image.png')
pixels = list(im.getdata())
这将返回具有(r,g,b)
值的像素列表,因此,如果您只想获取每个像素的灰度,只需像这样在每个值的第二个元素中迭代列表即可
result = []
counter = 0
for pixel in pixels:
counter += 1
result.append(['pixel'+ str(counter), pixel[1]])
return (result)
输出:
['pixel1', 72], ['pixel2', 50], ['pixel3', 0], ['pixel4', 11], ['pixel5', 30], ['pixel6', 42], ['pixel7', 107], ['pixel8', 123], ['pixel9', 124], ['pixel10', 130]