
    Xg                        d dl mZ d dlZd dlmZmZ d dlZd dlmZm	Z	m
Z
mZmZmZmZmZ  G d dej                   e	      Zy)    )annotationsN)AnyTuple)MediaObjectObjectDetectionObjectDetectionGeneratorSessionObjectDetectionModelObjectDetectionSessionObjectsDetectedScryptedMimeTypesSettingc                       e Zd Zdd fdZddZddZddZddZdddZdddZ	d Z
	 	 	 	 	 	 dd	Z	 d	 	 	 	 	 dd
Z	 d	 	 	 	 	 ddZ xZS )DetectPluginc                z    t         |   |       t        j                         | _        | j
                  | _        y )N)nativeId)super__init__asyncioget_event_looplooppluginId	modelName)selfr   	__class__s     E/server/volume/plugins/@scrypted/onnx/zip/unzipped/detect/__init__.pyr   zDetectPlugin.__init__   s.    (+**,	    c                     y N r   s    r   
getClasseszDetectPlugin.getClasses       r   c                     y r   r   r    s    r   getTriggerClasseszDetectPlugin.getTriggerClasses   r"   r   c                     y r   r   r    s    r   get_input_detailszDetectPlugin.get_input_details"   r"   r   c                     y r   r   r    s    r   get_input_formatzDetectPlugin.get_input_format%   r"   r   c                    g S r   r   )r   settingss     r   getModelSettingszDetectPlugin.getModelSettings(   s    	r   c                   K   | j                   | j                         | j                         | j                         | j	                         g d}|dxx   | j                  |      z  cc<   |S w)N)nameclassestriggerClasses	inputSizeinputFormatr*   r*   )r   r!   r$   r&   r(   r+   )r   r*   ds      r   getDetectionModelzDetectPlugin.getDetectionModel+   se     NN("446//1002#
 	
*..x88s   A*A,c                     y r   r   )r   src_sizes     r   get_detection_input_sizez%DetectPlugin.get_detection_input_size9   r"   r   c                   K   y wr   r   )r   
videoFramedetection_sessions      r   run_detection_imagez DetectPlugin.run_detection_image<   s      	s   c                 K   	 t         j                  j                  |       d {   }|2 3 d {   }t         j                  j                  |d          d {   }| j                  ||       d {   }d||d W7 ]7 T7 ,7 6 	 	 |j	                          d {  7   y #  Y y xY w# 	 |j	                          d {  7   w #  Y w xY wxY ww)NimageT)__json_copy_serialize_childrendetectedr8   )scrypted_sdksdkconnectRPCObjectr:   aclose)r   videoFramessessionr8   r<   r>   s         r   generateObjectDetectionsz%DetectPlugin.generateObjectDetectionsA   s     	 , 0 0 A A+ NNK$/  j*..??
7@STT!%!9!9%!II6: (",  OTI %0!((***!((***s   C"B0 BB0 BBB&B0 BB0 5B
6B0 BB0 
B0 B0 B) "B%#B) (C)B-+C0C2CCCCCCCc                h  K   |j                   t        j                  j                  k(  r(t        j
                  j                  |       d {   }n@t        j                  j                  |t        j                  j                         d {   }| j                  ||       d {   S 7 _7  7 wr   )
mimeTyper   Imagevaluer?   r@   rA   mediaManagerconvertMediaObjectToBufferr:   )r   mediaObjectrD   r<   s       r   detectObjectszDetectPlugin.detectObjectsU   s      #4#:#:#@#@@&**;;KHHE&33NN.44:: E --eW=== I >s7   A
B2B,A B2B.B2'B0(B2.B20B2r   )r   z
str | None)returnz	list[str])rN   zTuple[int, int, int])rN   str)r*   r   rN   zlist[Setting])r*   r   rN   r	   )r8   zscrypted_sdk.Imager9   r
   rN   r   )rC   r   rD   r   rN   r   )rL   r   rD   r
   rN   r   )__name__
__module____qualname__r   r!   r$   r&   r(   r+   r3   r6   r:   rE   rM   __classcell__)r   s   @r   r   r      s    '
,AW	 LP)H	* KO>&>1G>	>r   r   )
__future__r   r   typingr   r   r?   scrypted_sdk.typesr   r   r   r	   r
   r   r   r   ScryptedDeviceBaser   r   r   r   <module>rX      s8    "   	 	 	M>##M>r   