Palette
Photo Developer PlatformVideo Developer PlatformPalette AppPalette Video Colorization (via Neural Love)
  • Palette API & No-code Tools
  • 👋Introduction
    • Key features
    • The AI colorization engine
  • 📸Image Processing
    • Subscription plans
    • Bulk Processing with Google Colab and Google Drive
    • API Demo Usage with Google Colab
    • Image python snippets
    • Settings visualized
  • 📽️Video Processing
    • Subscription plans
    • Video Colorization with Google Colab
    • Video python snippets
  • 🛠️Extra resources
    • API reference
      • Colorize image with reference image
      • Colorize image with auto prompt
      • Colorize image with auto prompt base64
      • Colorize video frame with prompt
      • Colorize video frame with reference image
      • Generate video frame prompt
      • Generate image prompt
    • Specification
    • Other resources
Powered by GitBook
On this page
  • Generate 20 captions
  • Create 20 versions of one frame
  • Extract all the frames from a video
  • Colorize all the frames with the same prompt
  • Colorize all the images with the same reference image
  • Use the previous frame to colorize one after each other
  1. Video Processing

Video python snippets

Get up to speed with the video API

Generate 20 captions

import requests
import json

X_RapidAPI_Key = '4116843d07msh704be0dfa337826p108b3fj43524'
X_RapidAPI_Host = 'colorize-video.p.rapidapi.com'

headers = {
    'X-RapidAPI-Key': '4116843d07msh704be0dfa337826p108b3fjsn7ab402961f9f',
    'X-RapidAPI-Host': 'colorize-video.p.rapidapi.com',
}

url = "https://" + X_RapidAPI_Host + "/generate_video_frame_prompt"

files = {
    'image': ('test.jpg', open('./test.jpg', 'rb'), 'image/jpeg')   
}

data = {
  "standard_filter_id": "0", # 1-20, 0 is disabled 
  "artistic_filter_id": "0", # 1-100, 0 is disabled
  "all_standard_filters": "true", # return all 20 prompts
  "all_artistic_filters": "false", # return all 100 prompts
  "raw_captions": "false" # remove pre and post fix to the caption
}

response = requests.post(url, files=files, data=data, headers=headers)
prompts = data = json.loads(response.text)

Create 20 versions of one frame

import requests

X_RapidAPI_Key = '4116843d07msh704be0dfa337826p108b3fj43524'
X_RapidAPI_Host = 'colorize-video.p.rapidapi.com'

headers = {
    'X-RapidAPI-Key': '4116843d07msh704be0dfa337826p108b3fjsn7ab402961f9f',
    'X-RapidAPI-Host': 'colorize-video.p.rapidapi.com',
}

url = "https://" + X_RapidAPI_Host + "/colorize_video_frame_with_prompt"

data = {
      "resolution": "sd", #sd, full-hd, or 4k
      "prompt": "", # The prompt to colorize an image
      "auto_color": "false", # Apply automatic color balancing
      "white_balance": "false", # Apply automatic white balancing
      "temperature": "0.0", # -1.0 - 1.0, Apply color temperature
      "saturation": "1.0" # 0.0 - 2.0, Change saturation 
    }

for i, prompt in enumerate(prompts):
    
    files = {
        'image': ('test.jpg', open('./test.jpg', 'rb'), 'image/jpeg')   
    }

    data['prompt'] = prompt

    response = requests.post(url, files=files, data=data, headers=headers)
    f = open(str(i) + ".jpg", 'wb')
    f.write(response.content)
    f.close()

Extract all the frames from a video

import cv2
import os

def extract_images_from_video(video_path, output_folder):
    if not os.path.exists(output_folder):
        os.makedirs(output_folder)

    # Open the video file
    video = cv2.VideoCapture(video_path)

    # Check if the video was opened successfully
    if not video.isOpened():
        print("Error: Could not open the video file.")
        return

    # Extract images from the video
    frame_number = 0
    while True:
        ret, frame = video.read()

        # Break the loop if we have reached the end of the video
        if not ret:
            break

        # Save the current frame as an image
        output_filename = os.path.join(output_folder, f"frame{frame_number}.png")
        cv2.imwrite(output_filename, frame)
        frame_number += 1

    # Release the video object and close all windows
    video.release()
    cv2.destroyAllWindows()
    print(f"Images extracted and saved in the folder: {output_folder}")

Colorize all the frames with the same prompt

import os
import time
import requests

X_RapidAPI_Key = '4116843d07msh704be0dfa337826p108b3fj43524'
X_RapidAPI_Host = 'colorize-video.p.rapidapi.com'

headers = {
    'X-RapidAPI-Key': '4116843d07msh704be0dfa337826p108b3fjsn7ab402961f9f',
    'X-RapidAPI-Host': 'colorize-video.p.rapidapi.com',
}

def colorize_image(input_file, output_file, prompt):
  
    url = "https://" + X_RapidAPI_Host + "/colorize_video_frame_with_prompt"
    
    files = {
        'image': (input_file, open(input_file, 'rb'), 'image/jpeg')
    }
    data = {
        "resolution": "sd",
        "prompt": prompt,
        "auto_color": "false",
        "white_balance": "false",
        "temperature": "0.0",
        "saturation": "1.0"
    }
    response = requests.post(url, files=files, data=data, headers=headers)
    
    with open(output_file, 'wb') as f:
        f.write(response.content)

def process_files(input_folder, output_folder, prompt):
    if not os.path.exists(output_folder):
        os.makedirs(output_folder)

    for filename in os.listdir(input_folder):
        input_file = os.path.join(input_folder, filename)
        output_file = os.path.join(output_folder, f'colorized_{filename}')
        success = False
        retries = 0

        while not success and retries < 10:
            try:
                colorize_image(input_file, output_file, prompt)
                success = True
            except Exception as e:
                print(f"Error processing {input_file}: {e}")
                time.sleep(60)
                retries += 1

input_folder = './input'
output_folder = './output'
prompt = "Your selected prompt"
process_files(input_folder, output_folder, prompt)

Colorize all the images with the same reference image

import os
import time
import requests
from pathlib import Path

X_RapidAPI_Key = '4116843d07msh704be0dfa337826p108b3fj43524'
X_RapidAPI_Host = 'colorize-video.p.rapidapi.com'

headers = {
    'X-RapidAPI-Key': '4116843d07msh704be0dfa337826p108b3fjsn7ab402961f9f',
    'X-RapidAPI-Host': 'colorize-video.p.rapidapi.com',
}

def colorize_files(input_folder, output_folder, ref_image_path):
    
    url = "https://" + X_RapidAPI_Host + "/colorize_video_frame_with_prompt"
   
    data = {
        "resolution": "sd",
        "auto_color": "false",
        "white_balance": "false",
        "temperature": "0.0",
        "saturation": "1.0"
    }
    
    Path(output_folder).mkdir(parents=True, exist_ok=True)
    
    for file_name in os.listdir(input_folder):
        if file_name.lower().endswith(('.jpg', '.jpeg')):
            input_file_path = os.path.join(input_folder, file_name)
            output_file_path = os.path.join(output_folder, f'colorized_{file_name}')
            
            for _ in range(10):
                try:
                    files = {
                        'image': (file_name, open(input_file_path, 'rb'), 'image/jpeg'),
                        'image_ref': ('ref_image.jpg', open(ref_image_path, 'rb'), 'image/jpeg')
                    }
                    response = requests.post(url, files=files, data=data, headers=headers)
                    response.raise_for_status()
                    
                    with open(output_file_path, 'wb') as f:
                        f.write(response.content)
                    
                    print(f"Colorized {file_name} and saved as {output_file_path}")
                    break
                except Exception as e:
                    print(f"Error while processing {file_name}: {e}")
                    time.sleep(60)

input_folder = './input_folder'
output_folder = './output_folder'
ref_image_path = 'ref_image.jpg'

colorize_files(input_folder, output_folder, ref_image_path)

Use the previous frame to colorize one after each other

import os
import time
import requests
from pathlib import Path

X_RapidAPI_Key = '4116843d07msh704be0dfa337826p108b3fj43524'
X_RapidAPI_Host = 'colorize-video.p.rapidapi.com'

headers = {
    'X-RapidAPI-Key': '4116843d07msh704be0dfa337826p108b3fjsn7ab402961f9f',
    'X-RapidAPI-Host': 'colorize-video.p.rapidapi.com',
}

def colorize_images(folder_path):
    
    url = "https://" + X_RapidAPI_Host + "/colorize_video_frame_with_prompt"
   
    data = {
        "resolution": "sd",
        "auto_color": "false",
        "white_balance": "false",
        "temperature": "0.0",
        "saturation": "1.0"
    }
    
    output_folder = Path(folder_path) / "colorized"
    output_folder.mkdir(parents=True, exist_ok=True)

    reference_image = Path(folder_path) / "the_first_reference.jpg"

    for file in os.listdir(folder_path):
        if file.endswith(".jpg") or file.endswith(".jpeg"):
            input_file = Path(folder_path) / file

            retries = 10
            while retries > 0:
                try:
                    files = {
                        'image': (file, open(input_file, 'rb'), 'image/jpeg'),
                        'image_ref': ('ref_image.jpg', open(reference_image, 'rb'), 'image/jpeg')
                    }

                    response = requests.post(url, files=files, data=data, headers=headers)
                    response.raise_for_status()

                    colorized_file = output_folder / f'colorized_{file}'
                    with open(colorized_file, 'wb') as f:
                        f.write(response.content)

                    reference_image = colorized_file
                    break

                except requests.exceptions.RequestException:
                    retries -= 1
                    time.sleep(60)
                    
colorize_images("path/to/your/folder")
PreviousVideo Colorization with Google ColabNextAPI reference

Last updated 1 year ago

📽️