我有一個影像資料集,并使用一個函式計算每個影像的哈希值,現在我有 128 位哈希值,結果如下:
[0, 1, 1, 0, 1, 1, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0]
[0, 1, 1, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0]
[0, 1, 1, 0, 1, 1, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0]
...
現在我想把這個結果寫在一個excel表中(每個數字在一個單獨的單元格中),每行的最后一個單元格是每個影像的名稱(例如第一張影像的“ukbench00000.jpg”,“ukbench00001.jpg " 用于第二張影像,依此類推),
這是我在@Shagy G 的幫助下撰寫的代碼:
from openpyxl import Workbook
book = Workbook()
sheet = book.active
folder_dir = "C:.../ExLets"
row = 1
for image in os.listdir(folder_dir):
binary_hash = compute_binary_hash(image)
_len = len(binary_hash)
for i in range(1, _len):
cell = sheet.cell(row=row, column=i)
cell.value = binary_hash[i]
cell = sheet.cell(row=row, column=_len 1)
cell.value = image
row = 1
column = 1
book.save('C:.../ExLets2.xlsx')
但我仍然缺少 binary_hash 的第一個數字,因為范圍從 1 (而不是 0 )開始,以遵守行或列值必須至少為 1 的規則。
您對如何在 excel 表中寫入 binary_hash 的所有數字有任何建議嗎?
uj5u.com熱心網友回復:
number_format = workbook.add_format({'num_format': '0'})
row = 1
for image in os.listdir(folder_dir):
binary_hash = compute_binary_hash(image)
_len = len(binary_hash)
for i in range(0, _len):
worksheet.write(row, i 1, binary_hash[i], number_format)
worksheet.write(row, _len 1, image)
row = 1
from openpyxl import Workbook
book = Workbook()
sheet = book.active
row = 1
for image in os.listdir(folder_dir):
binary_hash = compute_binary_hash(image)
_len = len(binary_hash)
for i in range(0, _len):
cell = sheet.cell(row=row, column=i 1)
cell.value = binary_hash[i]
cell = sheet.cell(row=row, column=_len 1)
cell.value = image
row = 1
book.save('images.xlsx')
uj5u.com熱心網友回復:
使用pandas,您可以通過在行的每個單元格中插入陣列來打開和編輯,如果您需要先創建excel,請運行第二個代碼
import pandas as pd
df = pd.read_excel(f'YOUR_EXCEL.xlsx')
cols = df.columns
image_name = "ukbench00000.jpg"
binary_hash.append(image_name)
df.loc[len(df)] = binary_hash
df = df.set_index(f'{cols[0]}')
df.to_excel(f'YOUR_EXCEL.xlsx')
創建Excel:
import pandas as pd
d = {}
df = pd.DataFrame(data = d,columns = [x for x in range(0, 128)])
df.to_excel(f'YOUR_EXCEL.xlsx')
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/470702.html