cv.jit | Computer Vision for Jitter


cv.jit is a collection of max/msp/jitter tools for computer vision applications. The goals of this project are to provide externals and abstractions to assist users in tasks such as image segmentation, shape and gesture recognition, motion tracking, etc. as well as to provide educational tools that outline the basics of computer vision techniques.


cv.jit.mean Calculates the mean value of a matrix over time.
cv.jit.ravg Calculates the running average of a matrix over time.
cv.jit.sum Sums all the pixels in a plane, works for any type/dim.
cv.jit.variance Estimates the variance of a matrix over time.
cv.jit.stddev Estimates the standard deviation of a matrix over time.
Motion Analysis
cv.jit.opticalflow Estimates the optical flow using various algorithms.
cv.jit.LKflow Estimates the optical flow using the Lucas-Kanade technique.
cv.jit.HSflow Estimates the optical flow using the Horn-Schunk technique.
cv.jit.track Track the position of up to 255 individual pixels.
cv.jit.features2track Initialize cv.jit.track to easiest pixels to track.
cv.jit.framesub Difference between consecutive frames.
cv.jit.shift Region tracking using the MeanShift and CAMShift algorithms.
cv.jit.touches Track multiple regions at a time. (Optimized for multi-touch interfaces.)
Binary Images
cv.jit.threshold Adaptive thresholding.
cv.jit.canny Extract binary edges from a greyscale image.
cv.jit.binedge Returns only edge pixels.
cv.jit.dilate Turns a pixel ON if at least one neighbour is ON.
cv.jit.erode Removes the edge pixels from an image. Erode followed by dilate.
cv.jit.close Dilate followed by erode.
Image Segmentation
cv.jit.floodfill Isolates a single connected component.
cv.jit.label Gives each connected component a unique value.
cv.jit.blobs.bounds Find bounding boxes for each connected component.
cv.jit.blobs.centroids Find center of mass for each connected component.
cv.jit.blobs.direction Find direction each connected component points to.
cv.jit.blobs.elongation Calculate elongation for each connected component.
cv.jit.blobs.moments Calculate moments of inertia for each connected component.
cv.jit.blobs.orientation Measure angle of main axis for each connected component.
cv.jit.blobs.recon Carry out pattern recognition on each connected components.
cv.jit.blobs.sort Re-arrange labels so that each connected component keeps the same from frame to frame.
Shape Analysis
cv.jit.mass Returns the number of non-zero pixels.
cv.jit.centroids Calculates the center of mass for an image.
cv.jit.moments Computes various invariant shape descriptors.
cv.jit.orientation Calculates a shape’s main axis.
cv.jit.direction Calculates the direction a shape points to.
cv.jit.perimeter Counts the number of edge pixels.
cv.jit.elongation Estimates how thin a shape is.
cv.jit.circularity Estimates how compact a shape is.
cv.jit.undergrad Performs simple pattern recognition.
cv.jit.learn Performs pattern analyis and recognition on an incoming list.
cv.jit.faces Finds human faces in an image.
cv.jit.features Finds areas of high contrast, pixels that are easy to track.
cv.jit.lines Finds straight lines.
cv.jit.hough Compute Hough space. (by Christopher P. Baker and Mateusz Herczka.)
cv.jit.hough2lines Find straight lines in Hough space.
cv.jit.snake Fit a point sequence to image edges.
cv.jit.grab Cross-platform wrapper for jit.qt.grab/jit.dx.grab.
cv.jit.changetype Change the type of a matrix without changing other attributes.
cv.jit.resize Anti-aliased matrix resize.
cv.jit.cartopol Treats the data in two matrices as cartesian coordinates and translates to polar data.
cv.jit.poltocar …and vice versa.
Drawing and display
cv.jit.track.draw Visualize output of cv.jit.track.
cv.jit.lines.draw Visualize output of cv.jit.lines.
cv.jit.features.draw Visualize output of cv.jit.features.
cv.jit.faces.draw Visualize output of cv.jit.faces.
cv.jit.centroids.draw Visualize output of cv.jit.centroids.
cv.jit.blobs.orient.draw Visualize output of cv.jit.blobs.orientation.
cv.jit.blobs.elongation.draw Visualize output of cv.jit.blobs.elongation.
cv.jit.blobs.direction.draw Visualize output of cv.jit.blobs.direction.
cv.jit.blobs.centroids.draw Visualize output of cv.jit.blobs.centroids.
cv.jit.blobs.bounds.draw Visualize output of cv.jit.blobs.bounds.
cv.jit.blobs.color Visualize output of cv.jit.label.
cv.jit.shift.draw Drawing utility for cv.jit.shift.
cv.jit.flow.draw Display optical flow using hue and saturation.
cv.jit.touches.draw Drawing utility for cv.jit.touches.
Obsolete objects
cv.jit.covariance Computes the covariance matrix of a vector.
cv.jit.mahalanobis Computes the Mahalanobis metric.
cv.jit.hmean Calculates the harmonic mean over time.
cv.jit.gmean Calculates the geometric mean over time.
cv.jit.trackpoints Display utility for cv.jit.track.
cv.jit.trackgroup Manager utility for cv.jit.track.
cv.jit.shapeinfo Wrapper for cv.jit.moments.


The latest version of cv.jit is 1.8 and can be used with 64-bit versions of Max. A big thanks to the good folks at Cycling ’74 for porting the externals.

Download the latest build from the Github repository. Updated on 2015.4.30

Previous version (only runs on 32-bit Max)

Download cv.jit version 1.7.2. for OSX (Universal Binary).
Updated on 2010.10.13

Download cv.jit version 1.7.2 for Windows. Updated on 2010.10.13

Older versions that support Max 4.6 and earlier

Download cv.jit version 1.6.2 for OSX (Universal Binary).
Download cv.jit version 1.6.2 for Windows.


Download cv.jit for OS 9.


cv.jit is distributed according to the LGPL license. This means that you can freely use these externals as part of a Max patch.

Source Code

Download the development files for OSX and Windows, including source and project files. You can also obtain the source code from the Subversion repository at the following address:

Download the development files for the 64-bit port, including source and project files.

Requires jitter, available from Cycling ’74.


  • Damian Dziwis says:

    Dear Jean-Marc Pelletier,

    today I got a notification from Windows Defender, claiming the OSX externals of cv.jit are infected with a trojan. Is this a flase positive or is there an infection throughout opencv libraries?

    Thanks and best regards
    Damian Dziwis

    • jmp says:

      I ran a virus check on the binaries just in case but could not replicate. This is almost certainly a false positive. There’s a new version with bug fixes coming soon anyway so you might try again when it comes out.

  • Rajan Craveri says:

    Dear Jean-Marc Pelletier,
    I’m working on my first jitter external I want to release open source “rj.jit.findcontours”
    I can build correctly with dynamic libraries but I’m getting a lot of errors with static libraries.
    Can you support me a little? My goal is to get a visual studio 2019 working project so I can create more externals with static libraries.
    My email is rajancraveri[at]gmail[dot]com
    Thanks for your work

  • Leila El Dana says:

    Dear Jean-Marc,

    Thank you for developing an excellent package for computer vision in MAX! I have been working with cv.jit for almost a year now and I’ve had great success with it so far!

    I am creating an object recognition system for my MFA body of work and I keep encountering a bug with the cv.jit.blobs.recon object. It often gives me the following error: “File xxx.mxb was not created by cv.jit.learn.” I’ve created all my models with cv.jit.learn and I can’t seem to find a solution for this anywhere. Do you have any advice?

    I can see that a new version of the package is in the works and I can’t wait for its release!

    If you have some time, I would love to get your thoughts on my project.

    Looking forward to hearing back from you soon,


  • Jean-Pierre Delage says:

    Merci pour cv.jit.

    Outil exceptionnel pour mon travail et ma recherche.


Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.