Sample instead of scan
Regular frame sampling reduced unnecessary processing while retaining useful quality checks.
01 — Computer Vision / Workflow Automation
A C++ and OpenCV system that turned repetitive footage review into a faster, assisted workflow—without taking the final decision away from the editor.
The result came from automating the repetitive first pass while keeping each proposed cut available for review.
The problem
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.
System flow
Import video and preserve its frame rate and clip structure.
Inspect frames at regular intervals rather than evaluating every frame.
Use Laplacian variance to detect blur and locate cleaner regions.
Use a Haar cascade to identify frames with a face present.
Create a proposed clip from a sustained usable interval.
Display, edit, or remove clips before writing the final video.
Implementation
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.
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;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
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.
Regular frame sampling reduced unnecessary processing while retaining useful quality checks.
The clip list stayed editable, keeping human review in the workflow.
Optical flow remained an experiment after it proved unnecessary for the production path.
Outcome
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.