B
    A^                 @   s   d dl Z d dlZd dlZd dlZd dlmZmZmZm	Z	 d dl
mZ d dlmZ dd ZG dd dZed	krd
ZdZdejd ZdZeeedee d dZee ee e  e  e  eed dZdS )    N)Element
SubElementCommenttostring)ElementTree)minidomc             C   s$   t | d}t|}|jdddS )z8Return a pretty-printed XML string for the Element.
    zutf-8z   )indentZnewl)r   r   r   ZparseStringZtoprettyxml)elemZrough_stringZreparsed r   7X:\800139.EyeRIS\EyeRIS.Software\gridview\annotation.pyprettify	   s    
r   c               @   sP   e Zd ZdddZddd	Zd
d ZdddZdddZdddZdddZ	dS )
AnnotationNLCMlcm-log-filecamr   c             C   sb  |d k	rJ|| _ t|| _| j | _| jdj| _| jdj| _	n|| _
|| _|jd | _|jd | _|jd | _|| _|| _|| _	|| _g | _td| _| | jd| j	| _| | jd| j| _t| jd| _| | jdd	 | | jd
| | | jd| | | jd| j t| jd| _| | jd| j | | jd| j | | jd| j d S )Nfilenamefolder   r      
annotationsourceZdatabaseZUnknownlcmlogutimezcamera-namesizewidthheightdepth)xml_pathr   parsexml_treegetrootrootfindtextr   r   r   camera_nameshapeZimage_widthZimage_heightZimage_depthr   imagebboxesr   add_tagZ
folder_tagZfilename_tagr   r   r   )selfr   r'   r   r   r   r%   r   r   r   r   __init__   s8    
zAnnotation.__init__c             C   s    t ||}|d k	rt||_|S )N)r   strr$   )r*   parentZ
child_namevaluetagr   r   r   r)   3   s    

zAnnotation.add_tagc       	      C   s   |\}}}}}t | jd}| |d| | |dd | |dd | |dd | |dd t |d	}| |d
|d  | |d|d  | |d|d  | |d|d  | j| d S )NobjectnameZposeZUnspecifiedZ	truncated0ZoccludedZ	difficultbndboxxminr   yminr   xmaxymax)r   r"   r)   r(   append)	r*   bboxpt0pt1r   
class_namescoresobjr3   r   r   r   add_box9   s    
zAnnotation.add_boxc          	   C   s|   | j d k	r2t| j d}|t| j d S Q R X |d krRtj| jd| j	d }t|d}|t| j W d Q R X d S )Nwxmlz.xml)
r   openwriter   r"   ospathjoinr   r   )r*   filepathfr   r   r   save_xmlI   s    

zAnnotation.save_xmlc       	   	   C   s   | j  }xX| jD ]N}|\}}}}}t|t|t|dd t|||d |d ftjdd qW |d krtj	
| jd| jd }t| t|| d S )	N)r      r   r   r   r   g      ?)r   rJ   rJ   Zboxed_imagesz.jpg)r'   copyr(   cv2	rectangletupleputTextFONT_HERSHEY_COMPLEXrD   rE   rF   r   r   printimwrite)	r*   rG   Zmarked_imager9   r:   r;   r   r<   r=   r   r   r   save_boxed_imageV   s    
&zAnnotation.save_boxed_imagec             C   s2   |d kr t j| jd| jd }t|| j d S )Nimagesz.jpg)rD   rE   rF   r   r   rL   rR   r'   )r*   rG   r   r   r   
save_imaged   s    zAnnotation.save_imagec             C   s   |d kr| j }n|}x| jD ]}|\}}}}}| j|d |d |d |d d d f }	t|d d t|d  d t|d  d t|d  }
tj| jd|d |
 d }t	||	 qW d S )Nr   r   -roisz.jpg)
r   r(   r'   r,   rD   rE   rF   r   rL   rR   )r*   rG   Z
fileprefixr9   r:   r;   r   r<   r=   roiZcoord_stringr   r   r   	save_roisk   s    ,<zAnnotation.save_rois)NNNr   r   r   r   )N)N)N)N)N)
__name__
__module____qualname__r+   r)   r?   rI   rS   rU   rY   r   r   r   r   r      s   
!



r   __main__))d      )   i  l   Ztest_class1g      ?))i   i  )if  i  l   X5Ztest_class2g      ?rJ   )i  i     Za_test_file.i  )r'   r   r   r   z.xml)r   )rL   numpynptimerD   xml.etree.ElementTreer   r   r   r   Z	xml.etreer   Zxml.domr   r   r   rZ   r9   Zbbox2randomimgr   intannr?   rI   rS   rY   Zann2r   r   r   r   <module>   s(   j

