Skip to content

Latest commit

 

History

History
64 lines (49 loc) · 1.64 KB

File metadata and controls

64 lines (49 loc) · 1.64 KB

Video Module

Video analysis: optical flow, background subtraction, and object tracking.

Background Subtraction

BackgroundSubtractorMOG2

const BackgroundSubtractorMOG2 = struct {
    fn init() !BackgroundSubtractorMOG2;
    fn initWithParams(history: i32, varThreshold: f64, detectShadows: bool) !BackgroundSubtractorMOG2;
    fn deinit(self: *BackgroundSubtractorMOG2) void;
    fn apply(self: BackgroundSubtractorMOG2, src: Mat, dst: *Mat) void;
};

BackgroundSubtractorKNN

const BackgroundSubtractorKNN = struct {
    fn init() !BackgroundSubtractorKNN;
    fn initWithParams(history: i32, dist2Threshold: f64, detectShadows: bool) !BackgroundSubtractorKNN;
    fn deinit(self: *BackgroundSubtractorKNN) void;
    fn apply(self: BackgroundSubtractorKNN, src: Mat, dst: *Mat) void;
};

Optical Flow

fn calcOpticalFlowPyrLK(prevImg: Mat, nextImg: Mat, prevPts: Point2fVector,
    nextPts: *Point2fVector, status: *Mat, err_mat: *Mat) void;

fn calcOpticalFlowFarneback(prev: Mat, next: Mat, flow: *Mat, pyrScale: f64,
    levels: i32, winSize: i32, iterations: i32, polyN: i32, polySigma: f64, flags: i32) void;

Tracking

Tracker

const Tracker = struct {
    fn initMIL() !Tracker;
    fn initGOTURN() !Tracker;
    fn deinit(self: *Tracker) void;
    fn initTracker(self: Tracker, image: Mat, boundingBox: Rect) bool;
    fn update(self: Tracker, image: Mat) ?Rect;
};

Example

const cv = @import("zopencv");

// Background subtraction
var bg = try cv.video.BackgroundSubtractorMOG2.init();
defer bg.deinit();
var mask = try cv.Mat.init();
defer mask.deinit();
bg.apply(frame, &mask);