#!/usr/bin/env python
from __future__ import print_function
import re
import os
import sys
import cv2
import shutil
import numpy as np
from lxml import etree
def show(xmlfilename, jpgfilename, jpgxmlfilename):
im = cv2.imread(jpgfilename)
tree = etree.parse(xmlfilename)
root = tree.getroot()
objectes = root.findall('.//object')
for object in objectes:
name = object.find("name")
score = object.find("score")
bndbox = object.find("bndbox")
xmin = bndbox.find("xmin").text
ymin = bndbox.find("ymin").text
xmax = bndbox.find("xmax").text
ymax = bndbox.find("ymax").text
Y = np.array([float(ymin), float(ymax)])
for i in range(len(Y)):
Y[i] = int(round(Y[i]))
X = np.array([float(xmin), float(xmax)])
for i in range(len(X)):
X[i] = int(round(X[i]))
cv2.rectangle(im,(int(X[0]),int(Y[0])),(int(X[1]),int(Y[1])),(0,0,255),2)
yoffset = int(Y[0])
if yoffset > 14:
yoffset = yoffset - 4
else:
yoffset = yoffset + 12
if score:
cv2.putText(im, name.text + ' '+score[0].text, (int(X[0]),yoffset), cv2.FONT_HERSHEY_PLAIN,1, (255,0,0), 1, 25)
else:
cv2.putText(im, name.text, (int(X[0]),yoffset), cv2.FONT_HERSHEY_PLAIN,10, (255,0,0), 10, 25)
cv2.imwrite(jpgxmlfilename,im)
return
def main():
jpeg_dir,xml_dir,jpegxml_dir = process_arguments(sys.argv)
if not os.path.exists(jpeg_dir):
print('path not exist:',jpeg_dir)
return
if not os.path.exists(xml_dir):
print('path not exist:',xml_dir)
return
if os.path.exists(jpegxml_dir):
shutil.rmtree(jpegxml_dir)
os.makedirs(jpegxml_dir)
for root, dirs, files in os.walk( xml_dir ):
for fn in files:
filename = fn.split('.')
xmlfilename=root+'/'+fn
jpgfilename = jpeg_dir+'/'+filename[0] + '.jpg'
jpgxmlfilename = jpegxml_dir+'/'+filename[0] + '.jpg'
print(xmlfilename)
print(jpgfilename)
print(jpgxmlfilename)
show(xmlfilename, jpgfilename, jpgxmlfilename)
def process_arguments(argv):
if len(argv) < 4:
help()
jpeg_dir = argv[1]
xml_dir = argv[2]
jpegxml_dir = argv[3]
return jpeg_dir,xml_dir,jpegxml_dir
def help():
print('Usage: python main.py jpeg_dir,xml_dir,jpegxml_dir\n')
exit()
if __name__ == '__main__':
main()
网友评论