如何在Excel电子表格中使用x / y / r像素坐标在Python中裁剪多个图像?

问题描述 投票:0回答:1

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

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

我已经使用了pandas.read_excel函数在电子表格中进行读取,但是我想进一步取得进展吗?谁能帮忙吗?

谢谢,罗德

python pandas image-processing jupyter-notebook crop
1个回答
0
投票

您可以这样操作:

#!/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
© www.soinside.com 2019 - 2024. All rights reserved.