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VocBoundingBox)assert_almost_equalfunction)scopec                 C   s   t j| d|iS )N
image_size)r   from_voc)voc_bboxr    r
   f/home/jeff/fluffinator/venv/lib/python3.10/site-packages/tests/pybboxes/boxes/test_voc_bounding_box.pyvoc_bounding_box   s   r   modulec                   C   s   g dS )N)d   i   i0  i  r
   r
   r
   r
   r   voc_oob_bounding_box   s   r   c                 C   s2   t jd | t jjdddd }tj|d|iS )N*         )sizer   )nprandomseedrandintr   r   )r	   r   	voc_bbox2r
   r
   r   voc_bounding_box2   s   r   c                   C   s   dS )N)   ij  iu  i  r
   r
   r
   r
   r   scaled_voc_box   s   r   c                   C   s   dddddddS )Ni( i  it  gD8\?g5bm?i  
total_areaunionintersectioniouratio
differencer
   r
   r
   r
   r   %voc_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   voc_boxr
   r
   r   test_from_array6   s   r2   zbox_values,expected_out))i  i^  i  i  r3   ))r4   V     )r   r   r5   r6   ))        iD  )r7   r8   r9   i  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   r1   r
   r
   r   
test_clamp=   s   	r@   c                 C   s`   | j \}}}}|| || }}| | t| j |dd | j}	|| | }
|	|
 dk s.J d S )NTr:   r   )r=   scaler   r)   )r   r   scale_factorx_tly_tlx_bry_brwhactual_areadesired_arear
   r
   r   
test_scaleL   s   
rK   c                 C   sV   | j \}}}}||d  ||d  ||d  ||d  f}| |}t|j |d d S )Nr      r&   )r=   shiftr   )r   unnormalized_bbox_shift_amountrC   rD   rE   rF   r(   r*   r
   r
   r   
test_shiftY   s   




rO   c                 C   s^   t t tj| |dd W d    n1 sw   Y  tj| d|i}|jdu s-J d S )NT)r   strictr   )r,   raises
ValueErrorr   from_albumentationsr0   )r   r   r1   r
   r
   r   test_oobf   s
   rT   c                 C      |   }tt|j|d d S Nr&   )to_albumentationsr   listr=   )r   albumentations_bboxvoc2albumentations_bboxr
   r
   r   test_to_albumentationsq      r[   c                 C   rU   rV   )to_fiftyoner   rX   r=   )r   fiftyone_bboxvoc2fiftyone_bboxr
   r
   r   test_to_fiftyonev   r\   r`   c                 C   rU   rV   )to_cocor   rX   r=   )r   	coco_bboxvoc2coco_bboxr
   r
   r   test_to_coco{   r\   rd   c                 C   rU   rV   )to_yolor   rX   r=   )r   	yolo_bboxvoc2yolo_bboxr
   r
   r   test_to_yolo   r\   rh   )numpyr   r,   pybboxesr   r   tests.utilsr   fixturer   r   r   r   r%   r+   r2   markparametrizer@   rK   rO   rT   r[   r`   rd   rh   r
   r
   r
   r   <module>   s8    









