CoolFace
Apppublic

hololens/stable-diffusion-webui-depthmap-script

sourceHugging Faceupdated 2y agoView on Hugging Face
1likes
video_mode.cpython-310.pyc61 linesDownload Raw Back to __pycache__
1o

2��fx �@s|ddlZddlZddlmZddlZddlZddlmZddlm	Z	ddl3mZddd�Z
dd	d4�Zddd
�Zddd�ZdS)�N)�Image)�core)�backbone)�GenerationOptionsFc5Cs:t�|�j}|��dkr1g}t�|�}t|j�D]}|�|�|�	|�6d��qd|jd|fS|��dkrwddl}ddl
}|�|�}g}|jdd�D]}	|	��D]}7|8jd	d9�}t�|�}|�	|�qRqLt|jjdj�}
|��|
|fS|��dvr�|r�zSddl}|j|dd
d�}t|�}|ddkr�|d\}}g}|D]}10tj|11dd�}||f|_|t�|�g7}q�|d|fWdt�vr�|��SSWdt�vr�|��ndt�vr�|��ww|��dvr�ddlm}||�}dd�t|� ��D�}|j!|fSz	dt�|�gfWSt"�y}zt"d|���|�d}~ww)zOTakes the filepath, returns (fps, frames). Every frame is a Pillow Image objectz.gif�RGBi��durationz.mtsrN)�videoZrgb24)�format)�.avi�gray16le�)�pix_fmtZbits_per_pixelr
�size�uint16)�dtype�fps�gen)z.webmz.mp4r12)�
VideoFileClipcS�g|]}t�|��qS�)r�	fromarray��.0�xrr�FF:\3dpicmaker\stable-diffusion-webui-depthmap-script\src\video_mode.py�13<listcomp>=�z'open_path_as_images.<locals>.<listcomp>�z%Probably an unsupported file format: )#�pathlib�Path�suffix�lowerr�open�range�n_frames�seek�append�convert�info�imageio_ffmpeg�avZdemux�decodeZ14to_ndarrayr�float�streamsrZaverage_rate�closeZread_frames�next�np�15frombuffer�shape�localsZmoviepy.video.io.VideoFileClipr�listZiter_framesr�	Exception)�path�maybe_depthvideor �frames�img�ir)r*�	containerZpacket�frameZnumpy_frame�imagerrZ16video_info�width�height�resultr�clip�errr�open_path_as_images
sp17181920�212223��24�2526�27��rCc	Cs4|djdkrAddl}|jtj�||�d��|djdd|ddd�}z|�d�|D]28}|�t�	|��q*W|�29�dS|�30�wdd	�|D�}dd31lm}	|	||d�}32d}gd
�}|r`t
|�}|D]/\}
}z"|dvrp|�d�nd}|33jtj�||�d|
���||d�d}Wn	t��Yqb|s�td��dS)NrzI;16r34rZffv1r)�codecZmacro_block_sizecSrr)r0�asarray)rr<rrrrTrz#frames_to_video.<locals>.<listcomp>)�ImageSequenceClip)rF))�avi�png)rG�rawvideo)�mp4�libx264)�webmZlibvpx)rHrI�k�.)rD�bitrateTzSaving the video failed!)�moder)Zwrite_frames�osr6�joinr�sendr0�arrayr.Z"moviepy.video.io.ImageSequenceCliprF�reversedZwrite_videofile�	traceback�	print_excr5)rr8r6�name�colorvids_bitrater)�writerr<�arrsrFrA�done�priorityZv_formatrD�brrrr�frames_to_videoGs<"�35�$�r_�nonec	s�ddd�}td�|dkr|��S|dkr^g}�fdd�}tt���D]'}t��|�}tgd��D]\}}||�|||d	�7}q2||g7}q#t�t�|�d36dg�\}	}37|�|	|38�S�S)
NcSsdg}|dur|ntdd�|D��}|dur|ntdd�|D��}|D]
}|||||g7}q"|S)zYNormalizes objs, but uses (a, b) instead of (minimum, maximum) value of objs, if suppliedNcS�g|]}|���qSr)�min�r�objrrrrk�z?process_predicitons.<locals>.global_scaling.<locals>.<listcomp>cSrar)�maxrcrrrrlre)rbrf)�objs�a�b�39normalized�	min_value�	max_valuerdrrr�global_scalinghsz+process_predicitons.<locals>.global_scalingzProcessing generated depthmapsr`�experimentalcsttd|�t��d�S)Nrr)rbrf�len)�val��predictionsrr�<lambda>wsz%process_predicitons.<locals>.<lambda>)皙�����?皙�����?g�������?rurt�g�?g�X@)NN)�printr#ror0�40zeros_like�	enumerate�41percentile�stack)rr�smootheningrm�	processedrAr:�f�u�mulrhrirrqr�process_predicitonsgs42	r�c43s�|tjj��s|tjj��rdSttj�|j��\}}tj	t44��dd�|durqtd�tj
tjtjtjtjtjg�dd��D���fdd�|��D�}d|tj<d	|tjj<t�d|dd|�}	d45d�t|	�D�}46t|47|�}48n+td�ttj�|j�dd�\}}49t|50�t|�ks�Jd
��|51dj|djkr�td�td�tt�d||52d|��}tttdd�|���}
td�|
D]+��dkr�|dur�q��fdd�|D�}��d�}t|||dt53�||��d|��|�q�td�t|
�dkr�dSt|
�dkr�dSdS)Nz_Creating mesh-videos is not supported. Please split video into frames and use batch processing.T)�exist_okz)Generating depthmaps for the video framescSsg|]}|j���qSr)rXr!rrrrr�rzgen_video.<locals>.<listcomp>csi|]\}}|�vr||�qSrr)rrM�v)�needed_keysrr�54<dictcomp>�szgen_video.<locals>.<dictcomp>FcSsg|]}|d�qS)rvrrrrrr�rezUsing custom depthmap video)r7z>Custom depthmap video length does not match input video lengthrzCWarning! Input video size and depthmap video size are not the same!zGenerating output framescSs|dS)Nrr)rrrrrs�szgen_video.<locals>.<lambda>z(Saving generated frames as video outputs�depthcs g|]}|d�kr|d�qS)rrvrr)rrrr�s Z_videoz	depthmap-�-zAll done. Video(s) saved!rz<h3>Videos generated</h3>z<h3>Video generated</h3>zD<h3>Nothing generated - please check the settings and try again</h3>) �go�GEN_SIMPLE_MESHrXr!�GEN_INPAINTED_MESHrCrQr6�abspath�makedirsr�get_outpathrw�COMPUTE_DEVICE�55MODEL_TYPE�BOOST�NET_SIZE_MATCH�	NET_WIDTH�56NET_HEIGHT�itemsZDO_OUTPUT_DEPTH_PREDICTION�DO_OUTPUT_DEPTHr�core_generation_funnelr4r�ror�set�mapr_�get_next_sequence_number)r�outpath�inp�custom_depthmaprYr|rZinput_imagesZfirst_pass_inp�gen_objZinput_depthsZcdm_fps�img_resultsZgensZimgs�basenamer)rr�r�	gen_video�sF 5758� �r�)F)N)r`)NNr`)rrV�PILr�numpyr0rQ�srcrr�src.common_constantsrr�rCr_r�r�rrrr�<module>s5960:61