U ay-g @sddlZddlZejdejejejeddlZddl m Z ddl m Z m Z ddlmZGdddZddZdd d Zed krddlZddZeZe ejZeZeeejZeejdS)N)Image)remove new_session)timing_decoratorc@s(eZdZd ddZedd ddZdS) Removebgu2netcCst||_dS)N)rsession)selfnamer [/apdcephfs_cq5/share_300600172/huiwenshi/3d_services/repos/hunyuan3d-lite/infer/removebg.py__init__ szRemovebg.__init__zremove backgroundTcCsP|jdkr.|r(|d}t||jd}q<|}nt||jd}t|}t|}|S)z args: rgb_maybe: PIL.Image, with RGB mode or RGBA mode force: bool, if input is RGBA mode, covert to RGB then remove bg return: rgba_img: PIL.Image, with RGBA mode RGBARGB)r)modeconvertrrwhite_out_background preprocess)r rgb_maybeforcergba_imgr r r __call__ s  zRemovebg.__call__N)r)T)__name__ __module__ __qualname__r rrr r r r r s rc Cs|}g}|D]n\}}}}|dkr0|dq|dkoF|dkoF|dk}|rPdn|}|r\dn|} |rhdn|} ||| | |fq|||S)N)rrr)getdataappendputdata) Zpil_imgdatanew_datargbaZis_whiteZnew_rZnew_gnew_br r r r&s     rr)ffffff?cCst|}|ddddddfd|ddddddfd}}t|dk}|d|d}}|d|d} } |||| | ddfdd}|||| | dfdd}|jdd\} } tt| | |} | | | | }}|d|d}}tj| | dftj d d}tj | | ftj d }||||| ||| f<||||| ||| f<tj ||dddddffd d }t |d }||}|S) Ngo@g?rruint8)dtype)axisr)npasarraynonzerominmaxastypeshapeintonesr-zeros concatenater fromarrayresize)rsizeratioimagergbalphacoordsx_minx_maxy_miny_maxhwZ resize_sideZpad_hZpad_wZstart_hZstart_wZnew_rgbZ new_alphaZ rgba_arrayZ rgba_imager r r r5s& >$ $  r__main__cCs@t}|jdtdd|jdtdd|jdddd|S) Nz --rgb_pathT)typerequiredz--output_rgba_pathz--forceF store_true)defaultaction)argparseArgumentParser add_argumentstr parse_args)parserr r r get_argsTs rW)r(r*)ossyspathinsertdirnameabspath__file__numpyr2PILrZrembgrrZ infer.utilsrrrrrrQrWargsopenZrgb_pathrmodelrZrgba_pilsaveZoutput_rgba_pathr r r r s (