← Selected work

01 — Computer Vision / Workflow Automation

AI Video Editor

A C++ and OpenCV system that turned repetitive footage review into a faster, assisted workflow—without taking the final decision away from the editor.

C++OpenCVComputer VisionObject-Oriented DesignAug–Dec 2023
~60%less manual editing time
50+videos in the workflow

The result came from automating the repetitive first pass while keeping each proposed cut available for review.

The problem

A real production bottleneck.

Professional video work meant repeatedly watching long clips to find usable moments, checking visual quality, trimming each segment, and preparing the result for export. The project began as a practical way to reduce that manual review in an editing workflow I already understood firsthand.

The software used a command-line interface to import footage, analyze it, propose cuts, allow an editor to display or modify those clips, and render the result. The goal was not a one-click creative replacement. It was a focused tool for removing a slow, repetitive part of the process.

The résumé records the tool as deployed in a professional editing environment across more than 50 videos, reducing personal manual editing time by roughly 60%.

System flow

From footage to an assisted cut.

  1. 01Raw footage

    Import video and preserve its frame rate and clip structure.

  2. 02Frame sampling

    Inspect frames at regular intervals rather than evaluating every frame.

  3. 03Quality analysis

    Use Laplacian variance to detect blur and locate cleaner regions.

  4. 04Face analysis

    Use a Haar cascade to identify frames with a face present.

  5. 05Segment selection

    Create a proposed clip from a sustained usable interval.

  6. 06Review & render

    Display, edit, or remove clips before writing the final video.

Implementation

Simple signals, structured decisions.

The implementation organized footage as linked Clip objects with start and end positions. OpenCV handled video capture, image analysis, preview, and output. Sampling roughly every half-second kept the blur pass practical, while the selection logic looked for a clean interval long enough to produce a usable clip. The résumé describes compression analysis; in the implementation, clip normalization adjusted selected segments toward a four-to-eight-second working range.

Blur detection

Frames were converted to grayscale and evaluated using the variance of the Laplacian. Low variance indicated a softer image. That signal helped avoid sections where camera movement or focus made the footage less usable.

cvtColor(frame, gray, COLOR_BGR2GRAY);
Laplacian(gray, response, CV_64F);
meanStdDev(response, mean, deviation);

variance = deviation.val[0] * deviation.val[0];
isBlurry = variance < threshold;

Face detection

A Haar cascade checked sampled frames for faces. That provided another practical signal for footage centered on a person, without pretending that detection alone could make an editorial judgment.

Engineering decisions

What stayed out mattered too.

The repository contains experimentation with dense optical flow using Farnebäck’s method. It was not part of the deployed selection path: the experiment was substantially more expensive, and the blur-based approach better matched the performance needs of this workflow.

That tradeoff is part of the engineering story. The useful system was not the one with the most computer-vision techniques. It was the one that applied a small set of signals reliably enough to save time in production.

01

Sample instead of scan

Regular frame sampling reduced unnecessary processing while retaining useful quality checks.

02

Assist instead of replace

The clip list stayed editable, keeping human review in the workflow.

03

Reject expensive work

Optical flow remained an experiment after it proved unnecessary for the production path.

Outcome

Software shaped by the work around it.

The project connected software engineering to a real operating environment: video production. It required framing an ambiguous creative task as concrete data structures and decisions, measuring whether the tool saved time, and leaving room for the editor’s judgment where automation did not belong.

View repository & documentation