TemporalNet / temporalvideo.py
CiaraRowles's picture
Upload temporalvideo.py
2f81780
raw
history blame contribute delete
No virus
3.98 kB
import os
import glob
import requests
import json
from pprint import pprint
import base64
from io import BytesIO
# Replace with the actual path to your image file and folder
x_path = "./init.png"
y_folder = "./Input_Images"
output_folder = "output"
os.makedirs(output_folder, exist_ok=True)
def get_image_paths(folder):
image_extensions = ("*.jpg", "*.jpeg", "*.png", "*.bmp")
files = []
for ext in image_extensions:
files.extend(glob.glob(os.path.join(folder, ext)))
return sorted(files)
y_paths = get_image_paths(y_folder)
def send_request(last_image_path, temp_path,current_image_path):
url = "http://localhost:7860/sdapi/v1/img2img"
with open(last_image_path, "rb") as f:
last_image = base64.b64encode(f.read()).decode("utf-8")
with open(current_image_path, "rb") as b:
current_image = base64.b64encode(b.read()).decode("utf-8")
data = {
"init_images": [current_image],
"inpainting_fill": 0,
"inpaint_full_res": True,
"inpaint_full_res_padding": 1,
"inpainting_mask_invert": 1,
"resize_mode": 0,
"denoising_strength": 0.45,
"prompt": "pop art, painting, highly detailed,",
"negative_prompt": "(ugly:1.3), (fused fingers), (too many fingers), (bad anatomy:1.5), (watermark:1.5), (words), letters, untracked eyes, asymmetric eyes, floating head, (logo:1.5), (bad hands:1.3), (mangled hands:1.2), (missing hands), (missing arms), backward hands, floating jewelry, unattached jewelry, floating head, doubled head, unattached head, doubled head, head in body, (misshapen body:1.1), (badly fitted headwear:1.2), floating arms, (too many arms:1.5), limbs fused with body, (facial blemish:1.5), badly fitted clothes, imperfect eyes, untracked eyes, crossed eyes, hair growing from clothes, partial faces, hair not attached to head",
"alwayson_scripts": {
"ControlNet":{
"args": [
{
"input_image": current_image,
"module": "hed",
"model": "control_hed-fp16 [13fee50b]",
"weight": 1.5,
"guidance": 1,
},
{
"input_image": last_image,
"model": "diff_control_sd15_temporalnet_fp16 [adc6bd97]",
"module": "none",
"weight": 0.7,
"guidance": 1,
}
]
}
},
"seed": 3189343382,
"subseed": -1,
"subseed_strength": -1,
"sampler_index": "Euler a",
"batch_size": 1,
"n_iter": 1,
"steps": 20,
"cfg_scale": 6,
"width": 512,
"height": 512,
"restore_faces": True,
"include_init_images": True,
"override_settings": {},
"override_settings_restore_afterwards": True
}
response = requests.post(url, json=data)
if response.status_code == 200:
return response.content
else:
try:
error_data = response.json()
print("Error:")
print(str(error_data))
except json.JSONDecodeError:
print(f"Error: Unable to parse JSON error data.")
return None
output_images = []
output_images.append(send_request(x_path,y_folder, y_paths[0]))
output_paths = []
for i in range(1, len(y_paths)):
result_image = output_images[i-1]
temp_image_path = os.path.join(output_folder, f"temp_image_{i}.png")
data = json.loads(result_image)
encoded_image = data["images"][0]
with open(temp_image_path, "wb") as f:
f.write(base64.b64decode(encoded_image))
output_paths.append(temp_image_path)
result = send_request(temp_image_path, y_folder, y_paths[i])
output_images.append(result)
print(f"Written data for frame {i}:")