
    I/Yh                        d dl mZ 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	d dl
Z
d dlZd dlZd ZddZddZd Zd	 Z ej                     ej        d
           ej        d           ej        ddd           ej        ddd           ej        dded          d                                                                         Zedk    r e             dS dS )    )print_functionNc                 X   g }g }t          |           D ]}t          j                            t          j                            |                    d         }t          j        |          }t          j        |          }t          |          dk    r't          j
        d                    |                     t          |          dk    r(t          j
        d                    |                     |                    |           |                    |d                    ||fS )Nr      zIWARNING: More than one face found in {}. Only considering the first face.z-WARNING: No faces found in {}. Ignoring file.)image_files_in_folderospathsplitextbasenameface_recognitionload_image_fileface_encodingslenclickechoformatappend)known_people_folderknown_namesknown_face_encodingsfiler
   img	encodingss          mD:\DownLoads\facial_attendance_system-main\venv311\Lib\site-packages\face_recognition/face_recognition_cli.pyscan_known_peopler      s   K%&9:: 6 67##BG$4$4T$:$:;;A>.t44$3C88	y>>AJbiijnoopppy>>QJFMMdSSTTTTx((( ''	!5555,,,    Fc                     |r&t          d                    | ||                     d S t          d                    | |                     d S )Nz{},{},{}z{},{})printr   )filenamenamedistanceshow_distances       r   print_resultr"   #   sR     .j$99:::::gnnXt,,-----r   333333?c                 *    t          j                   }t          |j                  dk    rXt          j                            |          }|                    dt          j        j                   t          j
        |          }t          j        |          }|D ]_}t          j        ||          }	t          |	|k              }
d|
v r fdt          |
||	          D              Mt           dd            `|st           dd            d S d S )N@  )r%   r%   Tc                 @    g | ]\  }}}|t          ||          S  )r"   ).0is_matchr   r    image_to_checkr!   s       r   
<listcomp>ztest_image.<locals>.<listcomp>:   sO      Z  Z  ZMeXW[]e  QY  Z\.$-HH  Z  Z  Zr   unknown_personno_persons_found)r   r   maxshapePILImage	fromarray	thumbnailLANCZOSnparrayr   face_distancelistzipr"   )r*   r   r   	tolerancer!   unknown_imagepil_imgunknown_encodingsunknown_encoding	distancesresults   `   `      r   
test_imagerA   *   sc   $4^DDM =$&&)%%m44,	(9:::))(7FF- P P$23GIYZZ	i9,--6>> Z  Z  Z  Z  Zilms  vA  CL  jM  jM  Z  Z  Z  Z  Z)94OOOO N^%7}MMMMMN Nr   c                 D      fdt          j                   D             S )Nc                     g | ]C}t          j        d |t           j                  #t          j                            |          DS )z.*\.(jpg|jpeg|png))flags)rematchIr   r   join)r(   ffolders     r   r+   z)image_files_in_folder.<locals>.<listcomp>D   sE    rrr28LacdlnlpCqCqCqrBGLL##rrrr   )r   listdir)rJ   s   `r   r   r   C   s'    rrrrRZ-?-?rrrrr   c           	         |dk    rd }n|}t           }dt          j                    v rt          j        d          }|                    |          }t	          | t          j        |          t          j        |          t          j        |          t          j        |                    }	|                    t          |	           d S )N
forkserver)	processes)	multiprocessingget_all_start_methodsget_contextPoolr9   	itertoolsrepeatstarmaprA   )
images_to_checkr   r   number_of_cpusr:   r!   rO   contextpoolfunction_parameterss
             r   process_images_in_process_poolr\   G   s    		"	 G<>>>>!-l;;<<)<,,D%%-..##''  	LL011111r   r   r*   z--cpusr   zmnumber of CPU cores to use in parallel (can speed up processing lots of images). -1 means "use all in system")defaulthelpz--tolerancezkTolerance for face comparisons. Default is 0.6. Lower this if you get multiple matches for the same person.z--show-distancez<Output face distance. Useful for tweaking tolerance setting.)r]   typer^   c                    t          |           \  t          j        dk     r|dk    rt          j        d           d}t
          j                            |          rI|dk    r fdt          |          D              d S t          t          |          |           d S t          |           d S )N)      r   zmWARNING: Multi-processing support requires Python 3.4 or greater. Falling back to single-threaded processing!c           	      6    g | ]}t          |          S r'   )rA   )r(   
image_filer   r   r!   r:   s     r   r+   zmain.<locals>.<listcomp>o   s>      Z  Z  ZeoZ
K1EyR_``  Z  Z  Zr   )r   sysversion_infor   r   r   r   isdirr   r\   rA   )r   r*   cpusr:   r!   r   r   s      ``@@r   mainri   _   sA    )::M(N(N%K% 	6!!tqyy
  C  	D  	D  	D	w}}^$$ `199 Z  Z  Z  Z  Z  Z  Z  tI  JX  tY  tY  Z  Z  Z  Z  Z  Z*+@+P+PR]_suy  |E  GT  U  U  U  U  U>;0DiQ^_____r   __main__)F)r#   F)
__future__r   r   r   rE   face_recognition.apiapir   rP   rT   re   	PIL.Imager0   numpyr5   r   r"   rA   r   r\   commandargumentoptionboolri   __name__r'   r   r   <module>ru      s   % % % % % %  				 				 / / / / / /         



        - - -*. . . .N N N N2s s s2 2 20 %&& !!h  )X  Y  Y  YmS  0]  ^  ^  ^T@~` ` @ ^  ^ Y  Y "! '& `" zDFFFFF r   