| # Cut and Drag GUI | |
| We provide a GUI to generate cut-and-drag examples that will later be used for video generation given this input signal using **Time to Move**! | |
| Given an input frame, you can cut and drag polygons from the initial image, transform their colors, and also add external images that can be dragged into the initial scene. | |
| ## ✨ General Guide | |
| - Select an initial image. | |
| - Draw polygons in the image and drag them in several segments. | |
| - During segments you can rotate, scale, and change the polygon colors! | |
| - Polygons can also be dragged from an external image you can add into the scene. | |
| - Write an text prompt that will be used to generate the video afterwards. | |
| - You can preview the motion signal in an in-app demo. | |
| - In the end, all the inputs needed for **Time-to-Move** are saved automatically in a selected output directory. | |
| ## 🧰 Requirements | |
| Install dependencies: | |
| ```bash | |
| pip install PySide6 opencv-python numpy imageio imageio-ffmpeg | |
| ``` | |
| ## 🚀 Run | |
| Just run the python script: | |
| ```bash | |
| python cut_and_drag.py | |
| ``` | |
| ## 🖱️ How to Use | |
| * Select Image — Click 🖼️ Select Image and choose an image. | |
| * Choose Center Crop / Center Pad at the top of the toolbar if needed. | |
| * Add a Polygon “cutting” the part of the image by clicking Add Polygon. | |
| * Left-click to add points. | |
| * After finishing drawing the polygon, press ✅ Finish Polygon Selection. | |
| * Drag to move the polygon | |
| * During segments you’ll see corner circles and a top dot which can be used for scaling and rotating during the segments; in the video the shape is interpolated between the initial frame status and the final segment one. | |
| * Also, color transformation can be applied (using hue transformation) in the segments to change polygon colors. | |
| * Click 🎯 End Segment to capture the segment annotated. | |
| * The movement trajectory can be constructed from multiple segments: repeat move → 🎯 End Segment → move → 🎯 End Segment… | |
| * External Image | |
| * Another option is to add an external image to the scene. | |
| * Click 🖼️➕ Add External Image, pick a new image. | |
| * Position/scale/rotate it for its initial pose, then click ✅ Place External Image to lock its starting pose. | |
| * Now animate it like before: mark a polygon, move, etc. | |
| * Prompt | |
| * Type any text prompt you want associated with this example; it will be used later for video generation with our method. | |
| * Preview and Save | |
| * Preview using ▶️ Play Demo. | |
| * Click 💾 Save, choose an output folder and then enter a subfolder name. | |
| * Click 🆕 New to start a new project. | |
| ## Output Files | |
| * first_frame.png — the initial frame for video generation | |
| * motion_signal.mp4 — the reference warped video | |
| * mask.mp4 — grayscale mask of the motion | |
| * prompt.txt — your prompt text | |
| ## 🧾 License / Credits | |
| Built with PySide6, OpenCV, and NumPy. | |
| You own the images and exports you create with this tool. | |
| Motivation for creating an easy-to-use tool from [Go-With-The-Flow](https://github.com/GoWithTheFlowPaper/gowiththeflowpaper.github.io). |