最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

python 截取XML中bndbox的坐標中的圖像,另存為jpg的實例

 更新時間:2020年03月10日 10:15:39   作者:ssqsssq  
這篇文章主要介紹了python 截取XML中bndbox的坐標中的圖像,另存為jpg的實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧

文件目錄

Annotations中是XML文件。

JPEGImages中是對應的JPG文件

XML文件

要截取bndbox坐標中的內(nèi)容。

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和object name的方法

直接貼代碼了,封裝為了函數(shù),直接調(diào)用即可。其中有幾個點需要注意。

1、bndbox下面有4個子對象,因此不能直接使用firstChild來找到內(nèi)容,需要從該對象里面繼續(xù)尋找標簽為xmin等這樣的對象,注意要加[0]才正確,有問題的可以直接調(diào)試,然后看變量的結構,根據(jù)變量的結構來調(diào)用某一對象。

2、將空格' '替換為'_',方便命名。但是使用str.replace(' ', '_')不會直接改變str的內(nèi)容,返回的字符串是改變后的,因此需要變量保存。

import xml.dom.minidom as xmldom
def get_bndboxfromxml(imageNum, xmlfilebasepath):
  # 讀取xml文件
  bndbox = [0, 0, 0, 0]
  xmlfilepath = xmlfilebasepath + "\%06d" % imageNum+'.xml'
  # print(xmlfilepath)
  domobj = xmldom.parse(xmlfilepath)
  elementobj = domobj.documentElement
  sub_element_obj = elementobj.getElementsByTagName('bndbox')
  if sub_element_obj is not None:
    bndbox[0] = int(sub_element_obj[0].getElementsByTagName('xmin')[0].firstChild.data)
    bndbox[1] = int(sub_element_obj[0].getElementsByTagName('ymin')[0].firstChild.data)
    bndbox[2] = int(sub_element_obj[0].getElementsByTagName('xmax')[0].firstChild.data)
    bndbox[3] = int(sub_element_obj[0].getElementsByTagName('ymax')[0].firstChild.data)
  return bndbox


def get_bndboxnamefromxml(imageNum, xmlfilebasepath):
  bndbox = [0, 0, 0, 0]
  xmlfilepath = xmlfilebasepath + "\%06d" % imageNum + '.xml'
  domobj = xmldom.parse(xmlfilepath)
  elementobj = domobj.documentElement
  sub_element_obj = elementobj.getElementsByTagName('name')
  name = sub_element_obj[0].firstChild.data.replace(' ', '_')

  return name

以上這篇python 截取XML中bndbox的坐標中的圖像,另存為jpg的實例就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關文章

  • Python生成可執(zhí)行文件之PyInstaller庫的使用方式

    Python生成可執(zhí)行文件之PyInstaller庫的使用方式

    PyInstaller是一個十分有用的第三方庫,通過對源文件打包,Python程序可以在沒有安裝Python的環(huán)境中運行,也可以作為一個獨立文件方便傳遞和管理,下面這篇文章主要給大家介紹了關于Python生成可執(zhí)行文件之PyInstaller庫的使用方式,需要的朋友可以參考下
    2022-04-04
  • python+appium實現(xiàn)自動化測試的示例代碼

    python+appium實現(xiàn)自動化測試的示例代碼

    appium是一個開源的測試自動化框架,可以與原生的、混合的和移動的web應用程序使用,本文主要介紹了python+appium實現(xiàn)自動化測試的示例代碼,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-01-01
  • Python函數(shù)isalnum用法示例小結

    Python函數(shù)isalnum用法示例小結

    isalnum()函數(shù)是Python中的一個內(nèi)置函數(shù),用于判斷字符串是否只由數(shù)字和字母組成,其內(nèi)部實現(xiàn)原理比較簡單,只需遍歷字符串中的每一個字符即可,這篇文章主要介紹了Python函數(shù)isalnum用法介紹,需要的朋友可以參考下
    2024-01-01
  • 使用Python的turtle模塊繪制櫻花樹的代碼示例

    使用Python的turtle模塊繪制櫻花樹的代碼示例

    Python的turtle模塊是一個直觀的圖形化編程工具,讓用戶通過控制海龜在屏幕上的移動來繪制各種形狀和圖案,在接下來的文章中,我將通過一個生動的例子——繪制一幅櫻花樹圖畫——來深入探討turtle模塊的實用性,需要的朋友可以參考下
    2024-04-04
  • Python3利用openpyxl讀寫Excel文件的方法實例

    Python3利用openpyxl讀寫Excel文件的方法實例

    這篇文章主要給大家介紹了關于Python3利用openpyxl讀寫Excel文件的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-02-02
  • Python文件打開方式實例詳解【a、a+、r+、w+區(qū)別】

    Python文件打開方式實例詳解【a、a+、r+、w+區(qū)別】

    這篇文章主要介紹了Python文件打開方式,結合實例形式詳細分析了Python文件打開函數(shù)的使用及a、a+、r+、w+等屬性功能、使用區(qū)別與相關操作注意事項,需要的朋友可以參考下
    2019-03-03
  • django將網(wǎng)絡中的圖片,保存成model中的ImageField的實例

    django將網(wǎng)絡中的圖片,保存成model中的ImageField的實例

    今天小編就為大家分享一篇django將網(wǎng)絡中的圖片,保存成model中的ImageField的實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-08-08
  • python獲取指定時間差的時間實例詳解

    python獲取指定時間差的時間實例詳解

    這篇文章主要介紹了python獲取指定時間差的時間實例詳解的相關資料,需要的朋友可以參考下
    2017-04-04
  • python中使用ctypes調(diào)用so傳參設置遇到的問題及解決方法

    python中使用ctypes調(diào)用so傳參設置遇到的問題及解決方法

    這篇文章主要介紹了python中使用ctypes調(diào)用so傳參設置,本文較詳細的給大家介紹了遇到問題及解決方案,需要的朋友可以參考下
    2019-06-06
  • PyCharm使用matplotlib報MatplotlibDeprecationWarning問題解決辦法

    PyCharm使用matplotlib報MatplotlibDeprecationWarning問題解決辦法

    這篇文章主要給大家介紹了關于PyCharm使用matplotlib報MatplotlibDeprecationWarning問題解決的相關資料,主要是 matplotlib版本過高導致的,文中通過圖文介紹的非常詳細,需要的朋友可以參考下
    2023-06-06

最新評論

离岛区| 阳泉市| 彭阳县| 剑川县| 韶山市| 惠来县| 盐津县| 锦屏县| 岳阳县| 松潘县| 平邑县| 修武县| 昌图县| 县级市| 信宜市| 峨边| 兴化市| 中宁县| 澳门| 罗平县| 青浦区| 旬阳县| 丰台区| 农安县| 河源市| 武义县| 调兵山市| 皋兰县| 乌拉特前旗| 同江市| 温宿县| 金阳县| 仪陇县| 余姚市| 英吉沙县| 高安市| 临猗县| 巨鹿县| 东阿县| 嘉荫县| 汉川市|