将图像转换为numpy数组,将其保存到Excel中并全部反转

时间:2018-07-02 11:00:06

标签: python excel image numpy type-conversion

我竭尽全力自行解决此问题,到目前为止,我认为我遇到了障碍。我是Python的新手,到目前为止,我正在尝试完成一个Web抓取项目。我目前要完成的工作是拍摄图像,将其转换为 Pandas可读的内容(例如文本字符串),将其存储到单个Excel单元格中,然后再将其从文本转换回进入Excel中的成品图像。

我尝试了几种不同的方法,例如base64,该方法可用于图像之间的转换,但超出了我对单个Excel单元格的期望。我目前是一家合资企业,可以将图像作为NumPy数组存储到Pandas数据框中,并将其写为excel,因为它保留了数字和结构,因此似乎可以正常工作,但是我遇到了将其重新导入NumPy的问题(​​我“可以肯定的是,这是从整数转换为字符串,然后又尝试又不真正知道如何返回的问题。”

从图像到数组的转换后的初始dtype图像数组为uint8 返回NumPy时,数组的存储的Excel文本字符串为U786。我尝试过在NumPy中重新转换字符串,但是我不知道该怎么做。

一些潜在的障碍:

  1. 该图像是我从网上抓取中保存的Selenium的屏幕截图
  2. 我正在编写所有抓取的内容,以包括一次将屏幕快照从Pandas数据框转换为Excel到数组的图像截图。
  3. 我将Xlsxwriter用作Excel Writer来写入数据框,并且如果可能的话,将继续这样做。

下面是我用于该项目的代码示例。我愿意接受所有可能解决此问题的方法。

import numpy as np
from PIL import Image
import openpyxl as Workbook
import pandas as pd
import matplotlib

#----Opens Image of interest, adds text, and appends to dataframe
MyDataTable = [] #Datatable to write to Excel
ExampleTextString = "Text for Example" #Only used as without it Pandas gives an error of not passing 2D array when saving to excel
MyDataTable.append(ExampleTextString)
img = Image.open('example.png') # uses PIL library to open image in memory
imgtoarray = np.array(img) # imgtoarray.shape: height x width x channel
MyDataTable.append(imgtoarray) #adds my array to dataframe

#----Check my array image with matplotlib
matplotlib.pyplot.imshow(imgtoarray)

#----Pandas & Excelwriter to Excel 
df = pd.DataFrame(MyDataTable)                 
df.to_excel('ExampleSpreadsheet.xlsx', engine="xlsxwriter", header=False, index=False)

#------Open Array Test Data and where NumPy Array is Saved-----
wb = Workbook.load_workbook(filename='ExampleSpreadsheet.xlsx')
sheet_ranges = wb['Sheet1']
testarraytoimg = sheet_ranges['A2'].value
print (testarraytoimg)

0 个答案:

没有答案