python 截取XML中bndbox的坐标中的图像,另存为jpg

文件目录

Annotations中是XML文件。
JPEGImages中是对应的JPG文件
在这里插入图片描述

XML文件

在这里插入图片描述
要截取bndbox坐标中的内容。

python代码

# -*- coding: utf-8 -*-
# @Time    : 2020/2/8 22:14
# @Author  : SanZhi
# @File    : get_xml.py
# @Software: PyCharm
import cv2
import numpy as np

import xml.dom.minidom
import os
import argparse


def main():
    # JPG文件的地址
    img_path = 'D:/ser/JPEGImages/'
    # XML文件的地址
    anno_path = 'D:/ser/Annotations/'
    # 存结果的文件夹
    cut_path = 'D:/ser/cut/'
    # 获取文件夹中的文件
    imagelist = os.listdir(img_path)

    for image in imagelist:
        image_pre, ext = os.path.splitext(image)
        img_file = img_path + image
        img = cv2.imread(img_file)
        xml_file = anno_path + image_pre + '.xml'
        DOMTree = xml.dom.minidom.parse(xml_file)
        collection = DOMTree.documentElement
        objects = collection.getElementsByTagName("object")

        for object in objects:
            print("start")
            bndbox = object.getElementsByTagName('bndbox')[0]
            xmin = bndbox.getElementsByTagName('xmin')[0]
            xmin_data = xmin.childNodes[0].data
            ymin = bndbox.getElementsByTagName('ymin')[0]
            ymin_data = ymin.childNodes[0].data
            xmax = bndbox.getElementsByTagName('xmax')[0]
            xmax_data = xmax.childNodes[0].data
            ymax = bndbox.getElementsByTagName('ymax')[0]
            ymax_data = ymax.childNodes[0].data
            xmin = int(xmin_data)
            xmax = int(xmax_data)
            ymin = int(ymin_data)
            ymax = int(ymax_data)
            img_cut = img[ymin:ymax, xmin:xmax, :]
            cv2.imwrite(cut_path + 'cut_img_{}.jpg'.format(image_pre), img_cut)


if __name__ == '__main__':
    main()

参考:
python 利用xml文件中bndbox坐标截图并保存

发布了161 篇原创文章 · 获赞 7 · 访问量 7075

猜你喜欢

转载自blog.csdn.net/weixin_43778744/article/details/104229713
今日推荐