U
    h	                     @   sF   d dl Z d dlZd dlZd dlmZ d dlZd dlZ	G dd dZ
dS )    Nc                   @   s.   e Zd ZdddZdd Zdd Zdd	 Zd
S )
RecBuilderp   r   c                 C   sn   || _ || _d| _d| _d| _t|r4td| t	| t
jtj |dtj |dd| _g | _d S )Nr   z	%s existsz	train.idxz	train.recw)path
image_sizewidxwlabel	max_labelospexistsAssertionErrorosmakedirsmxrecordioZMXIndexedRecordIOjoinwritermeta)selfr   r    r   @/tmp/pip-unpacked-wheel-5oclok7i/insightface/data/rec_builder.py__init__
   s    
zRecBuilder.__init__c                 C   s   t |dkst| j}|D ]}| j}||gd}tjd||d}t|tj	rdtjj
||ddd}ntj||}| j|| | j| |  jd7  _q|| _|  jd7  _d S Nr   )Zimage_indexZimage_classes_   z.jpg)ZqualityZimg_fmt   )lenr   r
   r	   r   r   IRHeader
isinstancenpndarraypack_imgpackr   	write_idxr   appendr   )r   Zimgslabelimgidx
image_metaheadersr   r   r   add   s    zRecBuilder.addc                 C   s   | j }tjd||d}t|tr,|d }n|}||gd}t|tjr^tjj||ddd}ntj	||}| j
|| | j| |  j d7  _ t| j|| _d S r   )r	   r   r   r   r   listr    r!   r"   r#   r   r$   r   r%   maxr   )r   r'   r&   r(   r*   Zidlabelr)   r+   r   r   r   	add_image,   s    

zRecBuilder.add_imagec              	   C   s   t t| jdd}tj| j|tjd W 5 Q R X td| j	| j
 t tj| jdd<}|d| jd | jd	 | jd f  |d
| j	  W 5 Q R X d S )Nz
train.metawb)protocolzstat:propertyr   z	%d,%d,%d
r   r   z%d
)openr   r   r   pickledumpr   HIGHEST_PROTOCOLprintr	   r
   r   writer   r   )r   Zpfilefr   r   r   close@   s    &zRecBuilder.closeN)r   )__name__
__module____qualname__r   r,   r/   r:   r   r   r   r   r   	   s   
r   )r4   Znumpyr    r   os.pathr   r   sysZmxnetr   r   r   r   r   r   <module>   s   