python - 如何在 Excel 电子表格中使用 x/y/r 像素坐标在 Python 中裁剪多个图像?
问题描述
我正在 python 中进行一些图像处理,并且需要在数千张图像中裁剪多个区域。用于裁剪 ROI(感兴趣区域)的像素坐标数据位于 Excel 电子表格中,并在一列中排列为三个逗号分隔值。从这个示例数据中可以看出,每个图像中有多个需要裁剪的 ROI。
此列中的三个像素坐标值显示为[x,y,r],其中“x/y”坐标值标记方形 ROI 的左上角,“r”值表示 在这里看到的四个方面中的每一个。显然,在框的每个角没有多个 x/y 值的情况下找到 ROI 的方法是:“ROI = im[Y:Y+R, X:X+R]”,但是我很难达到这个阶段。
我已经使用 pandas.read_excel 函数来读取电子表格,但是我还在努力获得进一步的信息吗?有人可以帮忙吗?
谢谢,罗德
解决方案
你可以这样做:
#!/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
推荐阅读
- c++ - 如何在一行内向左或向右移动光标?
- node.js - 如何将表单数据和其他附加数据从 vue 发送到节点服务器
- javascript - How I can check error from try/catch block in Jest
- android - 在同一个flutter webview中打开一个新的标签链接
- c - 从方法返回一个浮点值并尝试打印它后,打印的值总是错误的(尽管该方法确实按预期工作)
- php - 未定义的变量,从未由 __construct 设置
- r - 在数据(aml)中:未找到数据集“aml”
- html - 使用 flex 水平对齐图像和文本
- c# - 请求包含实体主体但没有 Content-Type 标头。推断的媒体类型 application/octet-stream 不支持此资源
- elasticsearch - Logstash / Elasticsearch:“无法安装模板”/“得到响应代码'400'”