熊猫和Python图像到numpy数组

熊猫和Python图像到numpy数组,python,image,pandas,numpy,Python,Image,Pandas,Numpy,我目前正在自学机器学习的熊猫和python。到目前为止,我在文本数据方面做得很好,但在python和pandas知识有限的情况下处理图像数据让我感到困惑 我已将.csv文件读入pandas dataframe,其中一列包含图像的url。这就是我从数据框中获取信息时显示的内容 dataframe = pandas.read_csv("./sample.csv") dataframe.info() 范围索引:5000个条目,0到4999 数据列(共5列): name 5000非空对象 … ima

我目前正在自学机器学习的熊猫和python。到目前为止,我在文本数据方面做得很好,但在python和pandas知识有限的情况下处理图像数据让我感到困惑

我已将.csv文件读入pandas dataframe,其中一列包含图像的url。这就是我从数据框中获取信息时显示的内容

dataframe = pandas.read_csv("./sample.csv")
dataframe.info()

范围索引:5000个条目,0到4999

数据列(共5列):

name 5000非空对象

image 5000非空对象

图像列包含图像的url。问题是,我不知道如何从中导入图像数据并将其保存为numpy数组进行处理


感谢您的帮助。提前谢谢

由于我们不知道您的csv文件,您必须针对您的案例调整您的
pd.read\u csv()

在这里,我用来下载一些内存中的图像

然后,在scipy的帮助下对其进行解码(您应该已经有了,如果没有,您也可以使用)

解码后的图像是原始numpy数组,并由matplotlib显示

请记住,我们这里不使用临时文件,所有内容都保存在内存中。同时阅读(由jfs回答)

对于缺少某些必需的LIB的用户,应该能够对以下各项执行相同的操作(当然,代码需要更改):

  • 请求可以替换为(标准库)
    • 我没有显示代码,但是
    • 用urllib谈内存处理
  • 熊猫可以替换为(标准库)
  • scipy可以替换为(尽管内部存储可能会有所不同)
  • matplotlib仅用于演示目的(不确定枕头是否允许显示图像;编辑:似乎是这样)
我只是从中随机选择了一些图像

编辑:维基百科免费图片现已使用

代码:

输出:


由于我们不知道您的csv文件,您必须针对您的案例调整您的
pd.read\u csv()

在这里,我用来下载一些内存中的图像

然后,在scipy的帮助下对其进行解码(您应该已经有了,如果没有,您也可以使用)

解码后的图像是原始numpy数组,并由matplotlib显示

请记住,我们这里不使用临时文件,所有内容都保存在内存中。同时阅读(由jfs回答)

对于缺少某些必需的LIB的用户,应该能够对以下各项执行相同的操作(当然,代码需要更改):

  • 请求可以替换为(标准库)
    • 我没有显示代码,但是
    • 用urllib谈内存处理
  • 熊猫可以替换为(标准库)
  • scipy可以替换为(尽管内部存储可能会有所不同)
  • matplotlib仅用于演示目的(不确定枕头是否允许显示图像;编辑:似乎是这样)
我只是从中随机选择了一些图像

编辑:维基百科免费图片现已使用

代码:

输出:


如果要从web下载图像,然后从数据帧旋转图像并保存结果,可以使用以下代码:

import pandas as pd
import matplotlib.pylab as plt
import numpy as np
from PIL import Image
import urllib2 as urllib
import io

df = pd.DataFrame({
"name": ["Butterfly", "Birds"],
"image": ["https://upload.wikimedia.org/wikipedia/commons/0/0c/Two-tailed_pasha_%28Charaxes_jasius_jasius%29_Greece.jpg",
                                 'https://upload.wikimedia.org/wikipedia/commons/c/c5/Bat_cave_in_El_Maviri_Sinaloa_-_Mexico.jpg']})

def rotate_image(image, theta):
    """
    3D rotation matrix around the X-axis by angle theta
    """
    rotation_matrix = np.c_[
        [1,0,0],
        [0,np.cos(theta),-np.sin(theta)],
        [0,np.sin(theta),np.cos(theta)]
    ]
    return np.einsum("ijk,lk->ijl", image, rotation_matrix)

for i, imageUrl in enumerate(df.image):
    print imageUrl
    fd = urllib.urlopen(imageUrl)
    image_file = io.BytesIO(fd.read())
    im = Image.open(image_file)
    im_rotated = rotate_image(im, np.pi)
    fig = plt.figure()
    plt.imshow(im_rotated)
    plt.axis('off')
    fig.savefig(df.name.ix[i] + ".jpg")
如果要显示图片,可以执行以下操作:

plt.show()
生成的图片如下所示,也可以在此处看到:

如果要从web下载图像,然后从数据帧旋转图像并保存结果,可以使用以下代码:

import pandas as pd
import matplotlib.pylab as plt
import numpy as np
from PIL import Image
import urllib2 as urllib
import io

df = pd.DataFrame({
"name": ["Butterfly", "Birds"],
"image": ["https://upload.wikimedia.org/wikipedia/commons/0/0c/Two-tailed_pasha_%28Charaxes_jasius_jasius%29_Greece.jpg",
                                 'https://upload.wikimedia.org/wikipedia/commons/c/c5/Bat_cave_in_El_Maviri_Sinaloa_-_Mexico.jpg']})

def rotate_image(image, theta):
    """
    3D rotation matrix around the X-axis by angle theta
    """
    rotation_matrix = np.c_[
        [1,0,0],
        [0,np.cos(theta),-np.sin(theta)],
        [0,np.sin(theta),np.cos(theta)]
    ]
    return np.einsum("ijk,lk->ijl", image, rotation_matrix)

for i, imageUrl in enumerate(df.image):
    print imageUrl
    fd = urllib.urlopen(imageUrl)
    image_file = io.BytesIO(fd.read())
    im = Image.open(image_file)
    im_rotated = rotate_image(im, np.pi)
    fig = plt.figure()
    plt.imshow(im_rotated)
    plt.axis('off')
    fig.savefig(df.name.ix[i] + ".jpg")
如果要显示图片,可以执行以下操作:

plt.show()
生成的图片如下所示,也可以在此处看到:

你能发布一段CSV的片段吗。不幸的是,这不是一个代码编写服务。如果你还没有机会,请阅读并阅读。通过一些研究和Python文档,您应该可以找到一些工具来帮助您从带有url的web上抓取图像。如果您想出了一个解决方案,但遇到了问题,请回来询问。您使用的是哪一版本的Python?您是将数据帧用于其他目的,还是只是解析csv文件的中间步骤?谢谢johnashu和wwii!我已经阅读了链接,很抱歉我的问题含糊不清,信息不足。下次我会尽最大努力更好地提问。感谢您抽出时间阅读我的问题!你能发一段csvWelcome吗。不幸的是,这不是一个代码编写服务。如果你还没有机会,请阅读并阅读。通过一些研究和Python文档,您应该可以找到一些工具来帮助您从带有url的web上抓取图像。如果您想出了一个解决方案,但遇到了问题,请回来询问。您使用的是哪一版本的Python?您是将数据帧用于其他目的,还是只是解析csv文件的中间步骤?谢谢johnashu和wwii!我已经阅读了链接,很抱歉我的问题含糊不清,信息不足。下次我会尽最大努力更好地提问。感谢您抽出时间阅读我的问题!谢谢你,萨沙!解码确实是我需要帮助的部分。很抱歉,信息不充分。我想我目前正处于一个不知道我不知道什么的阶段,所以我的问题最终变得模糊不清。再次感谢你的帮助!谢谢你,萨沙!解码确实是我需要帮助的部分。很抱歉,信息不充分。我想我目前正处于一个不知道我不知道什么的阶段,所以我的问题最终变得模糊不清。再次感谢你的帮助!谢谢你,Cedirc!我用了一种不同的方法,但这个方法也很有效,似乎比我的方法干净多了!祝您今天过得愉快。再次感谢,谢谢