我有一个.txt文件,其中每行包含options: {
node: {...},
'node[cls-missing']: {
backgroundColor: 'red'
}
}
,还有一个path/to/image.jpg,xmin,ymin,xmax,ymax
文件夹,其中包含jpg图片。使用python提取每个文件坐标内的“对象”并查看边界框是否设置正确的最佳方法是什么?
谢谢!
答案 0 :(得分:0)
您的文本文件是CSV(逗号分隔值),可以这样加载。
您可以简单地使用PIL将文件夹中的每个图像裁剪到边界框:
import csv
from PIL import Image
f = open('test.csv')
csv_f = csv.reader(f)
#iterate through rows of your CSV
for row in csv_f:
#open image using PIL
im = Image.open(row[0])
#crop box format: xmin, ymin, xmax, ymax
crop_box = (row[1], row[2], row[3], row[4])
#convert values to int
crop_box = map(int, crop_box)
#crop using PIL
im = im.crop((crop_box))
#save the image to predetermined savepath
im.save(save_name)
答案 1 :(得分:0)
您可以使用opencv-python
库:
import cv2
# Reading the file
with open("filename.txt") as iostream:
content = iostream.read()
# Visualizing the data
color = (0, 0, 255) # RED
for line in content.split("\n"):
image_path, xmin, ymin, xmax, ymax = line.split(",")
image = cv2.imread(image_path)
pt1 = (int(xmin), int(ymin))
pt2 = (int(xmax), int(ymax))
cv2.rectangle(image, pt1, pt2, color)
cv2.imshow("Visualization bounding box", image)
cv2.waitKey()
此代码将显示每个图像,并带有一个红色矩形以显示边界框。如果按任意键,它将切换到下一个。
如果要保存裁剪后的图像,可以使用以下方式:
outfile = image_path[:-4] + "_bbox.jpg"
outimage = image[int(ymin):int(ymax), int(xmin):int(xmax)]
cv2.imwrite(outfile, outimage)