U
    R8c%                     @   s   d dgZ ddlZddlZdd Zeddd Zedd	d
 Zeddd Zeddd Zeddd Z	eddd Z
edG dd dZedG dd dZdd  Zdd Zejejj_dS )opkernel    Nc                    s    fdd}|S )Nc                    s   | t j  j| j< | S N)sysmodules__dict____name__)funcmname 5/tmp/pip-unpacked-wheel-j0v0ftt2/cv2/gapi/__init__.pyparameterized   s    zregister.<locals>.parameterizedr   )r   r   r   r
   r   register   s    r   zcv2.gapic                  G   s   t ttt jj| S r   )cvZgapi_GNetPackagelistmapZdetailstripargsr   r   r   networks   s    r   c                  G   s   t ttj| S r   )r   r   r   ZGCompileArgr   r   r   r   compile_args   s    r   cv2c                  G   s   | S r   r   r   r   r   r   GIn   s    r   c                  G   s   | S r   r   r   r   r   r   GOut   s    r   c                  G   s   | S r   r   r   r   r   r   gin"   s    r   c                  G   s   | S r   r   r   r   r   r   descr_of'   s    r   c                   @   s   e Zd Zdd ZG dd dZG dd dZG dd dZG d	d
 d
ZG dd dZG dd dZ	G dd dZ
G dd dZG dd dZG dd dZG dd dZG dd dZdS )GOpaquec                 C   s
   t |S r   )r   GOpaqueTclsZargtyper   r   r   __new__0   s    zGOpaque.__new__c                   @   s   e Zd Zdd ZdS )zGOpaque.Boolc                 C   s   t t jjS r   )r   r   gapiCV_BOOLselfr   r   r   r!   4   s    zGOpaque.Bool.__new__Nr   
__module____qualname__r!   r   r   r   r   Bool3   s   r)   c                   @   s   e Zd Zdd ZdS )zGOpaque.Intc                 C   s   t t jjS r   )r   r   r"   CV_INTr$   r   r   r   r!   8   s    zGOpaque.Int.__new__Nr&   r   r   r   r   Int7   s   r+   c                   @   s   e Zd Zdd ZdS )zGOpaque.Doublec                 C   s   t t jjS r   )r   r   r"   	CV_DOUBLEr$   r   r   r   r!   <   s    zGOpaque.Double.__new__Nr&   r   r   r   r   Double;   s   r-   c                   @   s   e Zd Zdd ZdS )zGOpaque.Floatc                 C   s   t t jjS r   )r   r   r"   CV_FLOATr$   r   r   r   r!   @   s    zGOpaque.Float.__new__Nr&   r   r   r   r   Float?   s   r/   c                   @   s   e Zd Zdd ZdS )zGOpaque.Stringc                 C   s   t t jjS r   )r   r   r"   	CV_STRINGr$   r   r   r   r!   D   s    zGOpaque.String.__new__Nr&   r   r   r   r   StringC   s   r1   c                   @   s   e Zd Zdd ZdS )zGOpaque.Pointc                 C   s   t t jjS r   )r   r   r"   CV_POINTr$   r   r   r   r!   H   s    zGOpaque.Point.__new__Nr&   r   r   r   r   PointG   s   r3   c                   @   s   e Zd Zdd ZdS )zGOpaque.Point2fc                 C   s   t t jjS r   )r   r   r"   
CV_POINT2Fr$   r   r   r   r!   L   s    zGOpaque.Point2f.__new__Nr&   r   r   r   r   Point2fK   s   r5   c                   @   s   e Zd Zdd ZdS )zGOpaque.Point3fc                 C   s   t t jjS r   )r   r   r"   
CV_POINT3Fr$   r   r   r   r!   P   s    zGOpaque.Point3f.__new__Nr&   r   r   r   r   Point3fO   s   r7   c                   @   s   e Zd Zdd ZdS )zGOpaque.Sizec                 C   s   t t jjS r   )r   r   r"   CV_SIZEr$   r   r   r   r!   T   s    zGOpaque.Size.__new__Nr&   r   r   r   r   SizeS   s   r9   c                   @   s   e Zd Zdd ZdS )zGOpaque.Rectc                 C   s   t t jjS r   )r   r   r"   CV_RECTr$   r   r   r   r!   X   s    zGOpaque.Rect.__new__Nr&   r   r   r   r   RectW   s   r;   c                   @   s   e Zd Zdd ZdS )zGOpaque.Primc                 C   s   t t jjS r   )r   r   r"   CV_DRAW_PRIMr$   r   r   r   r!   \   s    zGOpaque.Prim.__new__Nr&   r   r   r   r   Prim[   s   r=   c                   @   s   e Zd Zdd ZdS )zGOpaque.Anyc                 C   s   t t jjS r   )r   r   r"   CV_ANYr$   r   r   r   r!   `   s    zGOpaque.Any.__new__Nr&   r   r   r   r   Any_   s   r?   N)r   r'   r(   r!   r)   r+   r-   r/   r1   r3   r5   r7   r9   r;   r=   r?   r   r   r   r   r   ,   s   r   c                   @   s   e Zd Zdd ZG dd dZG dd dZG dd dZG d	d
 d
ZG dd dZG dd dZ	G dd dZ
G dd dZG dd dZG dd dZG dd dZG dd dZG dd dZG dd dZG dd  d Zd!S )"GArrayc                 C   s
   t |S r   )r   GArrayTr   r   r   r   r!   g   s    zGArray.__new__c                   @   s   e Zd Zdd ZdS )zGArray.Boolc                 C   s   t t jjS r   )r   rA   r"   r#   r$   r   r   r   r!   k   s    zGArray.Bool.__new__Nr&   r   r   r   r   r)   j   s   r)   c                   @   s   e Zd Zdd ZdS )z
GArray.Intc                 C   s   t t jjS r   )r   rA   r"   r*   r$   r   r   r   r!   o   s    zGArray.Int.__new__Nr&   r   r   r   r   r+   n   s   r+   c                   @   s   e Zd Zdd ZdS )zGArray.Doublec                 C   s   t t jjS r   )r   rA   r"   r,   r$   r   r   r   r!   s   s    zGArray.Double.__new__Nr&   r   r   r   r   r-   r   s   r-   c                   @   s   e Zd Zdd ZdS )zGArray.Floatc                 C   s   t t jjS r   )r   rA   r"   r.   r$   r   r   r   r!   w   s    zGArray.Float.__new__Nr&   r   r   r   r   r/   v   s   r/   c                   @   s   e Zd Zdd ZdS )zGArray.Stringc                 C   s   t t jjS r   )r   rA   r"   r0   r$   r   r   r   r!   {   s    zGArray.String.__new__Nr&   r   r   r   r   r1   z   s   r1   c                   @   s   e Zd Zdd ZdS )zGArray.Pointc                 C   s   t t jjS r   )r   rA   r"   r2   r$   r   r   r   r!      s    zGArray.Point.__new__Nr&   r   r   r   r   r3   ~   s   r3   c                   @   s   e Zd Zdd ZdS )zGArray.Point2fc                 C   s   t t jjS r   )r   rA   r"   r4   r$   r   r   r   r!      s    zGArray.Point2f.__new__Nr&   r   r   r   r   r5      s   r5   c                   @   s   e Zd Zdd ZdS )zGArray.Point3fc                 C   s   t t jjS r   )r   rA   r"   r6   r$   r   r   r   r!      s    zGArray.Point3f.__new__Nr&   r   r   r   r   r7      s   r7   c                   @   s   e Zd Zdd ZdS )zGArray.Sizec                 C   s   t t jjS r   )r   rA   r"   r8   r$   r   r   r   r!      s    zGArray.Size.__new__Nr&   r   r   r   r   r9      s   r9   c                   @   s   e Zd Zdd ZdS )zGArray.Rectc                 C   s   t t jjS r   )r   rA   r"   r:   r$   r   r   r   r!      s    zGArray.Rect.__new__Nr&   r   r   r   r   r;      s   r;   c                   @   s   e Zd Zdd ZdS )zGArray.Scalarc                 C   s   t t jjS r   )r   rA   r"   	CV_SCALARr$   r   r   r   r!      s    zGArray.Scalar.__new__Nr&   r   r   r   r   Scalar   s   rC   c                   @   s   e Zd Zdd ZdS )z
GArray.Matc                 C   s   t t jjS r   )r   rA   r"   CV_MATr$   r   r   r   r!      s    zGArray.Mat.__new__Nr&   r   r   r   r   Mat   s   rE   c                   @   s   e Zd Zdd ZdS )zGArray.GMatc                 C   s   t t jjS r   )r   rA   r"   CV_GMATr$   r   r   r   r!      s    zGArray.GMat.__new__Nr&   r   r   r   r   GMat   s   rG   c                   @   s   e Zd Zdd ZdS )zGArray.Primc                 C   s   t t jjS r   )r   r@   r"   r<   r$   r   r   r   r!      s    zGArray.Prim.__new__Nr&   r   r   r   r   r=      s   r=   c                   @   s   e Zd Zdd ZdS )z
GArray.Anyc                 C   s   t t jjS r   )r   r@   r"   r>   r$   r   r   r   r!      s    zGArray.Any.__new__Nr&   r   r   r   r   r?      s   r?   N)r   r'   r(   r!   r)   r+   r-   r/   r1   r3   r5   r7   r9   r;   rC   rE   rG   r=   r?   r   r   r   r   r@   c   s    r@   c                    s  t jjt jjt jjt jjt jjt jjt jj	t jj
t jjt jjt jjt jjt jjt jjt jjt jjt jjt jjt jjt jjt jjt jjt jjt jjt jjt jjt jjt jjt jjt jj i t j!jt jjt j!jt jjt j!jt jjt j!jt jjt j!jt jjt j!j	t jj
t j!jt jjt j!jt jjt j!jt jjt j!jt jjt j!jt jjt j!jt jjt j!jt jjt j!jt jj it jjdt jjdt jjdt jj
dt jjdt jjdt jjdt jjdt jjd	t jjd
t jjdt jjdt jjdt jjdi fdd}|S )Nzcv.gapi.CV_BOOLzcv.gapi.CV_INTzcv.gapi.CV_DOUBLEzcv.gapi.CV_FLOATzcv.gapi.CV_STRINGzcv.gapi.CV_POINTzcv.gapi.CV_POINT2Fzcv.gapi.CV_POINT3Fzcv.gapi.CV_SIZEzcv.gapi.CV_RECTzcv.gapi.CV_SCALARzcv.gapi.CV_MATzcv.gapi.CV_GMATzcv.gapi.CV_DRAW_PRIMc                    s   st d js(t d jtD ]4\}}|tjtjfkr0t d j|j|q0 fdd} _t| _	 S )Nz,{} operation should have at least one input!z-{} operation should have at least one output!z.{} unsupported output type: {} in position: {}c               
      s*  t t | kr(tdt t | tt| D ]\}\}}|krt|tjsztd j|tjjt	|jn6|	 | krtd j||  |	  q6|kr$t|tj
std j|tj
jt	|jn8|	 | krNtd j||  |	  q6|t	|kr6td j||jt	|jq6tjj jf|  }g }tD ]\}}|tjkr||  nr|tjkr||  nV|kr|||  n6|kr|||  ntd j|j|qrt |dkr"t|S |d S )	Nz:Invalid number of input elements!
Expected: {}, Actual: {}z9{} invalid type for argument {}.
Expected: {}, Actual: {}zA{} invalid GArrayT type for argument {}.
Expected: {}, Actual: {}zA{} invalid GOpaque type for argument {}.
Expected: {}, Actual: {}z?{} invalid input type for argument {}.
Expected: {}, Actual: {}zMIn {}: G-API operation can't produce the output with type: {} in position: {}   r   )len	Exceptionformat	enumeratezip
isinstancer   rA   r   typer   r"   Z__opoutMetarG   appendZgetGMatGScalarZ
getGScalarZ
getGOpaqueZ	getGArraytuple)r   itar   Z
out_protosZout_type)r    garray_typesgopaque_typesin_typesop_id	out_typestype2strr   r   on   sx          
 

     
 
   

  
z&op.<locals>.op_with_params.<locals>.on)
rJ   rK   r   rL   r   rG   rR   idstaticmethodr]   )r    rT   rU   r]   rW   rX   rY   rZ   r[   r\   r    r   op_with_params   s      0
zop.<locals>.op_with_params)"r   r@   r)   r"   r#   r+   r*   r-   r,   r/   r.   r1   r0   r3   r2   r5   r4   r7   r6   r9   r8   r;   r:   rC   rB   rE   rD   rG   rF   r=   r<   r?   r>   r   )rZ   rY   r[   rb   r   r`   r   r      s                                               @c                    s    fdd}|S )Nc                    s    j | _  j| _| S r   )r^   rP   ra   op_clsr   r   kernel_with_params$  s    z"kernel.<locals>.kernel_with_paramsr   )rd   re   r   rc   r   r   "  s    )__all__r   r   r   r   r   r   r   r   r   r   r   r@   r   r   Zgapi_wip_gst_GStreamerPipeliner"   ZwipZGStreamerPipeliner   r   r   r   <module>   s,   





6Dz