【问题标题】:How to I crop multiple images in Python using x/y/r pixel coordinates in an Excel spreadsheet?如何在 Excel 电子表格中使用 x/y/r 像素坐标在 Python 中裁剪多个图像?
【发布时间】:2020-07-03 20:48:20
【问题描述】:

我正在用 python 进行一些图像处理,并且需要在数千张图像中裁剪多个区域。用于裁剪 ROI(感兴趣区域)的像素坐标数据位于 Excel 电子表格中,并在 ONE 列中以 THREE 逗号分隔值排列。从这个example data 可以看出,每个图像中有多个需要裁剪的 ROI。

此列中的三个像素坐标值显示为[x,y,r],其中“x/y”坐标值标记左上角 的方形 ROI,“r”值表示 四个边的长度 as seen here 。显然,在框的每个角没有多个 x/y 值的情况下找到 ROI 的方法是:“ROI = im[Y:Y+R, X:X+R]”,但是我很难达到这个阶段。

我已经使用 pandas.read_excel 函数读取电子表格,但是我还在努力获得进一步的信息?有人可以帮忙吗?

谢谢,罗德

【问题讨论】:

  • 你已经问过这个问题,我要求你提供一个真实的电子表格样本。您现在已经提供了电子表格的“图片”,任何人都无法在 Excel 中打开它。图片也无法告诉我们您的电子表格是 CSV、XLS 还是 XLSX 文件,因此您无法帮助自己。请通过 Dropbox 或 Google Drive 等提供示例电子表格。谢谢。
  • 抱歉,我觉得我的第一个问题不清楚,所以想完善它。您可以在此处找到数据样本:liveplymouthac-my.sharepoint.com/:f:/g/personal/…(我还包含了前 5 张图片,以便您查看图片的样子)
  • 我认为如果您将其分解为多个步骤,您的问题将很容易解决。使用pandas 可以轻松地遍历列。扩展pandas 中的列表是 S/O 上的一个著名问题。从 x、y 和高度/宽度进行裁剪也已在此处进行了多次。
  • 是的,熊猫是天赐之物。我设法遍历列没问题,这只是使用我正在努力解决的 x/y/r 方法进行裁剪。已经回答了吗?我找不到问题的答案,所以它一定是我搜索时的措辞。我会尝试再次找到它。干杯
  • 你提到的方法有什么问题? ROI = im[Y:Y+R, X:X+R]?我这样做了很多次。

标签: python pandas image-processing jupyter-notebook crop


【解决方案1】:

你可以这样做:

#!/usr/bin/env python3

import re
import cv2
import numpy as np
import pandas as pd

# Open spreadsheet
excel_file = 'spreadsheet.xlsx'
ss = pd.read_excel(excel_file)

# Extract filenames and coordinates
FandC = []
for index,row in ss.head().iterrows():
   filename = row['filename']
   coords   = row['Pixel coords']
   # Use regex to find anything that looks like a bunch of digits possibly with decimal point
   x, y, r = re.findall(r'[0-9.]+',coords)
   print(f'DEBUG: filename={filename}, x={x}, y={y}, r={r}')
   FandC.append({'filename': filename, 'x':x, 'y':y, 'r':r})

现在FandC 中的文件名和坐标列表如下所示:

DEBUG: filename=M116_13331848_13109013315679.jpg, x=1345.83, y=1738, r=44.26
DEBUG: filename=M116_13331848_13109013315679.jpg, x=776.33, y=698.17, r=65.72
DEBUG: filename=M116_13331848_13109013315679.jpg, x=1215.5, y=485.67, r=61.16
DEBUG: filename=M116_13331848_13109013315679.jpg, x=1439.33, y=502.67, r=64.73
DEBUG: filename=M116_13331848_13109013315679.jpg, x=793.33, y=1661.5, r=86.03

【讨论】:

  • 这非常有效!非常感谢马克,也感谢你的耐心。我是一名在程序员世界中跌跌撞撞的生态学家,只是(尝试)边走边学:)
  • 不客气。如果您遇到困难,请回来问一个新问题 - 问题(和答案)是免费的? 祝您的项目好运。
猜你喜欢
  • 2020-06-28
  • 1970-01-01
  • 2014-06-01
  • 2014-06-29
  • 1970-01-01
  • 1970-01-01
  • 2021-11-06
  • 2022-12-18
  • 2020-07-02
相关资源
最近更新 更多