o
    e	                     @   sz   d dl Z d dlZd dlZd dlZd dlZd dlZd dlZd dlm	Z	 dd Z
dd Zddd	Zd
d Zdd Zdd ZdS )    N)Imagec                 C   s   t j| p	t| S )z
    Check whether a local OR hosted image path is valid
    :param image_path: local path or URL of image
    :returns: Boolean
    )ospathexistscheck_image_url
image_path r	   H/var/www/myenv/lib/python3.10/site-packages/roboflow/util/image_utils.pycheck_image_path   s   r   c                 C   s.   t j| jdvrdS t| }|jtjjkS )zg
    Check whether a hosted image path is valid
    :param url: URL of image
    :returns: Boolean
    )httphttpsF)	urllibparseurlparseschemerequestsheadstatus_codecodesok)urlrr	   r	   r
   r      s   
r   <   c           	      C   s   t t|t j}t|tj}| jddd }|jddd }||kr+t	||}tj
| | |d}|d }t||| d| dS )a.  
    Overlay a translucent mask on top of an image with CV2
    :param image: a CV2 image / numpy.ndarray matrix
    :param encoded_mask: a base64 encoded single channel image
    :param transparency: alpha transparency of masks for semantic overlays
    :returns: CV2 image / numpy.ndarray matrix
       N)maskd   r   )np
fromstringbase64	b64decodeuint8cv2imdecodeIMREAD_UNCHANGEDshaperesizebitwise_andaddWeighted)	imageencoded_masktransparencynp_datar   
image_size	mask_sizemaskedalphar	   r	   r
   
mask_image"   s   r2   c                 C   s   t | std|  ddS )z
    Validate whether a local OR hosted image path is valid
    :param image_path: local path or URL of image
    :returns: None
    :raises Exception: Image path is not valid
    zImage does not exist at !N)r   	Exceptionr   r	   r	   r
   validate_image_path=   s   r5   c                 C   sB   t | }t |t j}t|}t }|j|ddd |	 S )Nr   JPEG)qualityformat)
r#   imreadcvtColorCOLOR_BGR2RGBr   	fromarrayioBytesIOsavegetvalue)r   imgr*   pilImagebufferedr	   r	   r
   	file2jpegH   s   

rD   c                 C   sR   t | d}dd | D }dd t|D W  d    S 1 s"w   Y  d S )Nr   c                 S   s   g | ]}|  r|qS r	   strip).0liner	   r	   r
   
<listcomp>S   s    z!load_labelmap.<locals>.<listcomp>c                 S   s   i | ]	\}}||  qS r	   rE   )rG   irH   r	   r	   r
   
<dictcomp>T   s    z!load_labelmap.<locals>.<dictcomp>)open	readlines	enumerate)ffilelinesr	   r	   r
   load_labelmapQ   s   $rR   )r   )r    r=   r   r   r#   numpyr   r   PILr   r   r   r2   r5   rD   rR   r	   r	   r	   r
   <module>   s    	
	