o
    Ďi                     @   sX   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 Zd	d
 Z	dd Z
dS )    N)Imagec                 C   s&   d}| D ]}|d |v r|d7 }q|S )Nr   class    )predictionstarget_classcount
predictionr   r   _/home/jeff/fluffinator/venv/lib/python3.10/site-packages/roboflow/util/active_learning_utils.pycount_class_occurances
   s   r   c                 C   s&   t | |k s|rt| ||k rdS dS )NFT)lenr   )r   required_objects_countrequired_class_countr   r   r   r
   count_comparisons   s   r   c                 C   s,   || d | d    kr|krdS  dS dS )NheightwidthTFr   )r	   minimum_size_requirementmaximum_size_requirementr   r   r
   check_box_size!   s   r   c                 C   sD   t | }t }|d}|j|ddd t| }|	dS )NRGBZ   JPEG)qualityformatascii)
r   openioBytesIOconvertsavebase64	b64encodegetvaluedecode)
image_pathimagebuffered	image_rgbimg_strr   r   r
   base64_encode*   s   


r)   c                 C   s\   t | } t |}|dkrtd|}ddi}t| |d}tj|||d}t| d S )NzCLIP FEATURIZE URL NOT IN ENVzYou need to ad CLIP_FEATURE_URL to your env vars. To learn more about this active learning feature, contact Roboflow sales https://roboflow.com/sales. You can remove the similarity keys from your conditionals to use other active learning functionality.zContent-Typez
text/plain)image1image2)dataheaders
similarity)r)   	Exceptionjsondumpsrequestspostfloat)r*   r+   CLIP_FEATURIZE_URLurlr-   r,   rr   r   r
   clip_encode3   s   r8   )r    r   r0   r2   PILr   r   r   r   r)   r8   r   r   r   r
   <module>   s    		