o
    jĎi                     @   s   d dl Zd dlZd dlmZmZ d dlmZ ejdddd Z	ejddd	d
 Z
ejdddd Ze dd Zejdddd Zdd Zdd Zejdg ddd Zdd Zdd Zdd Zdd  Zd!d" Zd#d$ Zd%d& ZdS )'    N)BoundingBoxYoloBoundingBox)assert_almost_equalfunction)scopec                 C   s   t j| d|iS )N
image_size)r   	from_yolo)	yolo_bboxr    r
   g/home/jeff/fluffinator/venv/lib/python3.10/site-packages/tests/pybboxes/boxes/test_yolo_bounding_box.pyyolo_bounding_box   s   r   modulec                   C   s   g dS )N)g     ?g*?g      ?gUUUUUU?r
   r
   r
   r
   r   yolo_oob_bounding_box   s   r   c                 C   s2   t jd | t jjdddd }tj|d|iS )N*   皙g{Gz?   )sizer   )nprandomseeduniformr   r   )r	   r   
yolo_bbox2r
   r
   r   yolo_bounding_box2   s   r   c                   C   s   dS )N)gfffff?gfffff?g:#?g@?r
   r
   r
   r
   r   scaled_yolo_box   s   r   c                   C   s   dddddddS )Ni i
  iā  giN?g#:t;?if  
total_areaunionintersectioniouratio
differencer
   r
   r
   r
   r   &yolo_area_computations_expected_output   s   r!   c                 C   s@   | j |j  | | | | | || | | | d}t||d d S )Nr   actualdesired)arear   r   )r   r   r!   actual_outputr
   r
   r   test_area_computations*   s   
r'   c                 C   sJ   t t tj| |d}W d    n1 sw   Y  |jdu s#J d S )N)r   F)pytestwarnsFutureWarningr   
from_arrayis_oob)r	   r   yolo_boxr
   r
   r   test_from_array6   s   r.   zbox_values,expected_out)))g      ?g      ?g      ?g?)g      ?gffffff?g      ?gffffff?))r   r         ?r/   )皙?r0   皙?r1   ))g333333?皙?ffffff?r3   )g?r2   g?r3   c                 C   s*   t | d|i}|  t|j|dd d S )Nr   Tr#   r$   ignore_numeric_type_changes)r   clampr   values)
box_valuesexpected_outr   r-   r
   r
   r   
test_clamp=   s   	r:   c                 C   sF   | j \}}}}||d  ||d  ||f}| |}t|j |d d S )Nr      r"   )r7   shiftr   )r   normalized_bbox_shift_amountx_cy_cwhr$   r&   r
   r
   r   
test_shiftL   s   
rB   c           
      C   sj   | j \}}}}| j\}}|| || }}| | t| j |dd | j}|| | }	||	 dk s3J d S )NTr4   d   )r7   r   scaler   r%   )
r   r   scale_factor_r@   rA   image_widthimage_heightactual_areadesired_arear
   r
   r   
test_scaleT   s   

rK   c                 C   s`   t t tj| |dd W d    n1 sw   Y  tj| |dd}|jdu s.J d S )NT)r   strictF)r(   raises
ValueErrorr   r   r,   )r   r   r-   r
   r
   r   test_oobb   s
   rO   c                 C      |   }tt|j|d d S Nr"   )to_albumentationsr   listr7   )r   albumentations_bboxyolo2albumentations_bboxr
   r
   r   test_to_albumentationsm      rV   c                 C   rP   rQ   )to_cocor   rS   r7   )r   	coco_bboxyolo2coco_bboxr
   r
   r   test_to_cocor   rW   r[   c                 C   rP   rQ   )to_fiftyoner   rS   r7   )r   fiftyone_bboxyolo2fiftyone_bboxr
   r
   r   test_to_fiftyonew   rW   r_   c                 C   rP   rQ   )to_vocr   rS   r7   )r   voc_bboxyolo2voc_bboxr
   r
   r   test_to_voc|   rW   rc   )numpyr   r(   pybboxesr   r   tests.utilsr   fixturer   r   r   r   r!   r'   r.   markparametrizer:   rB   rK   rO   rV   r[   r_   rc   r
   r
   r
   r   <module>   s8    









