您的数据看起来像真实图像文件(JPG?)中的原始字节。数据的问题在于它应该是字节,而不是unipre。您必须弄清楚如何从unipre转换为字节。您可以使用一整罐充满编码陷阱的蠕虫,但是使用可能会很幸运
img.enpre('iso-8859-1')。我不知道,我也不会在答复中处理。PNG图像的原始数据如下所示:
rawdata = 'x89PNGrnx1anx00x00...x00x00IENDxaeB`x82'
一旦获得字节数,就可以从原始数据创建一个PIL图像,并将其作为nparray读取:
>>> from StringIO import StringIO>>> from PIL import Image>>> import numpy as np>>> np.asarray(Image.open(StringIO(rawdata)))array([[[255, 255, 255, 0], [255, 255, 255, 0], [255, 255, 255, 0], ..., [255, 255, 255, 0], [255, 255, 255, 0], [255, 255, 255, 0]]], dtype=uint8)
使它在Spark上运行所需的所有功能是
SparkContext.binaryFiles:
>>> images = sc.binaryFiles("path/to/images/")>>> image_to_array = lambda rawdata: np.asarray(Image.open(StringIO(rawdata)))>>> images.values().map(image_to_array)


