网站开发技术方案编写,seo是谁,东莞网站建设用哪种好,营销传播的服务商需求#xff1a; 数据集的数据增强中#xff0c;有时需要用到图像垂直翻转的操作#xff0c;图像垂直翻转后#xff0c;对应的xml标注文件也需要做坐标的调整。 解决方法#xff1a; 使用pythonopencvimport xml.etree.ElementTree对图像垂直翻转和xml标…需求 数据集的数据增强中有时需要用到图像垂直翻转的操作图像垂直翻转后对应的xml标注文件也需要做坐标的调整。 解决方法 使用pythonopencvimport xml.etree.ElementTree对图像垂直翻转和xml标注文件坐标调整。代码如下
import cv2
import os
import glob
import xml.etree.ElementTree as etdef flip_images(source_dir):images_list glob.glob(os.path.join(source_dir, *.jpg))index 0for image_path in images_list:image cv2.imread(image_path)flip_image cv2.flip(image,0)cv2.imwrite(image_path.replace(.jpg, _flip.jpg), flip_image)tree_ et.ElementTree()tree_.parse(image_path.replace(.jpg, .xml))root et.Element(annotation)folder et.SubElement(root, folder)folder.text imagesfilename et.SubElement(root, filename)filename.text tree_.find(.//filename).text.replace(.jpg, _flip.jpg)path et.SubElement(root, path)path.text /home/mapgoo/testsource et.SubElement(root, source)database et.SubElement(source, database)database.text Unknownsize et.SubElement(root, size)width et.SubElement(size, width)width.text tree_.find(.//width).textheight et.SubElement(size, height)height.text tree_.find(.//height).textdepth et.SubElement(size, depth)depth.text 3segmented et.SubElement(root, segmented)segmented.text 0for bndbox in tree_.findall(.//object):xmin bndbox.find(.//xmin)ymin bndbox.find(.//ymin)xmax bndbox.find(.//xmax)ymax bndbox.find(.//ymax)xmin_text xmin.textymin_text ymin.textxmax_text xmax.textymax_text ymax.textobject_ et.SubElement(root, object)name et.SubElement(object_, name)name.text bndbox.find(name).textpose et.SubElement(object_, pose)pose.text Unspecifiedtruncated et.SubElement(object_, truncated)truncated.text 0difficult et.SubElement(object_, difficult)difficult.text 0bndbox et.SubElement(object_, bndbox)xmin et.SubElement(bndbox, xmin)xmin.text xmin_textymin et.SubElement(bndbox, ymin)ymin.text str(image.shape[0] - int(ymax_text))xmax et.SubElement(bndbox, xmax)xmax.text xmax_textymax et.SubElement(bndbox, ymax)ymax.text str(image.shape[0] - int(ymin_text))tree et.ElementTree(root)tree.write(image_path.replace(.jpg, _flip.xml), encodingutf-8)print(image_path, index)index 1if __name__ __main__:source_dir /home/Desktop/testflip_images(source_dir) 使用以上代码需要修改原图像和标注文件所在文件夹路径source_dir。亲测可用。