Many video editing tasks can be repetitive and time-consuming, especially when applied frequently across different videos. While professional software like Adobe After Effects offer scripting tools for automation, developers who prefer a streamlined approach without the need to open heavy software can turn to Python and OpenCV. In this blog post, we’ll explore how to enhance videos by adding opacity transitions at the start and end using Python and OpenCV.
Basic Functionalities of OpenCV:
OpenCV is a popular library used for computer vision and image
processing tasks. It provides a wide range of functionalities. In this blog post, we’ll focus on leveraging OpenCV’s video editing capabilities to add opacity transitions to a video.
Adding Opacity Transitions with Python and OpenCV:
To add opacity transitions to a video, we’ll follow these steps:
-
Setting Up the Project:
Import the necessary libraries (cv2
,numpy
,tqdm
) and define the input and output video paths. -
Reading the Input Video:
Use OpenCV to read the input video and retrieve its properties such as frame width, height, frame rate, and total frame count. -
Adding Opacity Transitions:
Calculate opacity levels for the start and end transitions and apply them to the video frames using OpenCV’s image manipulation functions. -
Writing the Output Video:
Create a new video file and write the edited frames with opacity transitions using OpenCV’sVideoWriter
class. -
Displaying Progress and Messages:
Use thetqdm
library to create a progress bar and print informative messages during video processing.
Here’s the complete Python script for adding opacity transitions to a video using Python and OpenCV:
import cv2
import numpy as np
from tqdm import tqdm input_video_path = 'input_video.mp4'
output_video_path = 'output_video.mp4' cap = cv2.VideoCapture(input_video_path) if not cap.isOpened(): print("Error: Could not open video file.") exit() frame_width = int(cap.get(3))
frame_height = int(cap.get(4))
fps = int(cap.get(5))
frame_count = int(cap.get(7)) fade_frames = 15 # Number of frames for the opacity transition fourcc = cv2.VideoWriter_fourcc(*'mp4v')
out = cv2.VideoWriter(output_video_path, fourcc, fps, (frame_width, frame_height)) with tqdm(total=frame_count) as pbar: for i in range(frame_count): ret, frame = cap.read() if not ret: break # Calculate opacity for the start and end transitions start_alpha = min(1.0, i / fade_frames) end_alpha = min(1.0, (frame_count - i) / fade_frames) # Apply opacity transitions frame = cv2.addWeighted(frame, start_alpha, frame, 0, 0) frame = cv2.addWeighted(frame, end_alpha, frame, 0, 0) out.write(frame) pbar.update(1) cap.release()
out.release()
cv2.destroyAllWindows() print("Video processing completed.")
The result looks something like this:
https://www.youtube.com/shorts/Pbb1FYdNdlc
Experiment with the provided script, adjust parameters, and explore additional video editing functionalities offered by OpenCV to take your video editing skills to the next level.
Discover more from Coursity
Subscribe to get the latest posts sent to your email.