A simple interface for advanced visual tracking.
Open Source
Published under an open-source LGPL license on Github to allow for others to contribute features and forks.
Camera Support
Supports a wide range of camera devices with the ability to stitch and switch in between sensors on the fly.
Cross Platform
Built on C++ for real-time performance and stability using on common frameworks including OpenCV and openFrameworks.
An overview of the application and features.

About CCV - Community Core Vision
Community Core Vision, CCV for short is a open source/cross-platform solution for blob tracking with computer vision. It takes an video input stream and outputs tracking data (e.g. coordinates and blob size) and events (e.g. finger down, moved and released) that are used in building multi-touch applications. CCV can interface with various web cameras and video devices as well as connect to various TUIO/OSC/XML enabled applications and supports many multi-touch lighting techniques including: FTIR, DI, DSI, and LLP with expansion planned for the future vision applications (custom modules/filters). This project is developed and maintained by the NUI Group Community.
Features
- Simple GUI - The new interface is more intuitive and easier to understand and use.
- Filters (dynamic background subtraction, high-pass, amplify/scaler, threshold) - This means it will work with all optical setups (FTIR, DI, LLP, DSI). More filters can be added as modules.
- Camera Switching - Have more than one camera on your computer? Now you can press a button and switch to the next camera on your computer without having to exit the application.
- Input Switching- Want to use test videos instead of a live camera? Go ahead, press a button and it will switch to video input.
- Dynamic Mesh Calibration - For people with small or large tables, now you can add calibration points (for large displays) or create less points (smaller displays) while maintaining the same speed and performance.
- Image Reflection- Now you can flip the camera vertical or horizontal if it is the wrong way.
- Network Broadcasting - You can send OSC TUIO messages directly from the configapp for quick testing.
- Camera and application FPS details viewer - Now you can see the framerate of both the tracker and camera that you are getting.
- GPU Mode - Utilize your GPU engine for accelerated tracking.
- Cross-platform - This works on Windows, Mac, and Linux.
- Multiple Camera Support - Camera stitching and calibration for larger environments. (Windows Preview)
- Object/Pattern Tracking - Tracks fidicuals and objects places on surface.
- External Communications - External communications with TUIO and other protocols.
- Code Sync - Major refactroing of all codebase to latest feature set.
- Optical Flow - Gives you momentum variables out of the video stream.
- ROI Selection- Optimizing processing by using only the Region of Interest.
Contributors
- Christian Moore
- Seth Sandler
- Alex Popovich
- Anatoly Churikov
- Amit Kumar Sarangi
- Alain Ramos
- Artem Titoulenko
- Laurence Muller
- David Wallin
- Ramsin Khoshabeh
- Sebastian Hartman
- Thomas Hansen
- and more...
About the Community
Established in 2006, The Natural User Interface Group is an open source community that creates and shares interaction techniques & standards that benefit designers & developers throughout the world. We offer a collaborative environment for scientists that are interested in learning and developing modern Human/Computer Interaction methods and concepts. Our research includes topics such as: computer vision, touch computing, voice & gesture recognition, experience design and information visualization. Our mission is to openly discover, document and distribute NUI knowledge. Getting started is simple; register as a member and learn more about us...
Getting started using the application and controls.

Controls
1. Source image - Displays the raw video image from either camera or video file.
2. Use Camera Toggle - Sets the input source to camera and grabs frames from selected camera.
3. Use Video Toggle - Sets the input source to video and grabs frames from video file.
4. Previous Camera Button - Gets the previous camera device attached to computer if more than one is attached.
5. Next Camera Button - Gets the next camera device attached to computer if more than one is attached.
6. Tracked Image - Displays the final image after image filtering that is used for blob detection and tracking.
7. Inverse - Track black blobs instead white blobs.
8. Threshold Slider - Adjusts the level of acceptable tracked pixels. The higher the value is, the bigger the blobs have to be to track.
9. Movement filtering - Adjust the level of acceptable distance (in pixels) before a movement of a blob is detected. The higher the option is, the more you have to actually move your finger for CCV to register a blob movement.
10. Min Blob Size - Adjust the level of acceptable minimum blob size. The higher the option is, the bigger a blob has to be to be assigned an ID.
11. Max Blob Size - Adjust the level of acceptable maximum blob size. The higher the option is, the bigger a blob can be before losing its ID.
12. Remove Background Button - Captures the current source image frame and uses it as the static background image to be subtracted from the current active frame. Press this button to recapture a static background image
13. Dynamic Subtract Toggle - Dynamically adjusts the background image. Turn this on if the environmental lighting changes often or false blobs keep appearing due to environmental changes. The slider will determine how fast the background will be learned..
14. Smooth Slider - Smoothes the image and filters out noise (random specs) from the image.
15. Highpass Blur Slider - Removes the blurry parts of the image and leaves the sharper brighter parts.
16. Highpass Noise - Filters out the noise (random specs) from the image after applying Highpass Blur.
17. Amplify Slider - Brightens weak pixels. If blobs are weak, this can be used to make them stronger.
18. On/Off Toggle - Used on each filters, this is used to turn each filter on or off.
19. Camera Settings Button - Opens the camera settings. This will open controls of the camera, especially when using a PS3 Eye camera.
20. Flip Vertical Toggle - Flips the source image vertically.
21. Flip Horizontal Toggle - Flips the source image horizontally.
22. GPU Mode Toggle - Turns on experimental hardware acceleration and uses the GPU. This is best used on newer graphics cards only.
23. Send UDP Toggle - Turns on the sending of TUIO messages.
24. Flash XML - Turns on the sending of Flash XML messages (no need for flosc anymore).
25. Binary TCP - Turns on the sending of RAW messages (x,y coordinates).
26. Enter Calibration - Loads the calibration screen.
27. Save Settings - Saves all the current settings into the XML settings file.
Quick Setup
- Download and extract the stable latest build of CCV for your platform.
- Launch the CCV application (.app, .exe, etc).
- Adjust the filter sliders to suite your sensing technique.
- Enter calibration mode and test results.
- Start your client applications which recieves tracking data.
Calibration
In order to calibrate CCV for your camera and projector, you'll need to run the calibration process. Calibrating allows touch points to line up with elements on screen. This way, when touching something displayed on screen, the touch is registered in the correct place. In order to do this, CCV has to translate camera space into screen space; this is done by touching individual calibration points. Following the directions below will help explain how to setup and perform calibration.
Read the full calibration guide here.
Camera Support
- DirectShow Source
- Sony PS3 Eye
- Microsoft Kinect
- Pointgrey Devices
- and more...
Requirements
- Hardware - Modern CPU/GPU and camera device.
- Windows - Quicktime & Visual Studio Redistributables
- Mac - Quicktime
- Linux - libpoco package
Resources
Get the latest stable and developer packages.
Version 1.2 - Stable (Cross Platform)
Platform | Title | File |
---|---|---|
Linux Ubuntu 11.04+ (32/64) |
Package for Ubuntu
Running the Demo on Windows 1. Download the latest binary distribution for Windows (highlighted in green). 2. Extract the archive by right-clicking it and selecting "Extract All...". 3. The extracted folder should open automatically. Double-click "demo.bat" to get started. If you're unsure what to try or what's possible in this simple demo, watch the video on the front page for an example. |
Download Now |
Mac OS X 10.6+ |
Package for Mac OS X
Running the Demo on Mac OS X 1. Download the latest binary distribution for OS X (highlighted in green). 2. If you're using Safari the archive should be extracted for you. If you're using another browser, double-click the downloaded archive to extract it. 3. In the extracted folder, double-click "demo.command" or the "demo" file to get started. If you're unsure what to try or what's possible in this simple demo, watch the video on the front page for an example. |
Download Now |
Windows 7/8 (32/64 bits) |
Package for Windows
Running the Demo on Windows 1. Download the latest binary distribution for Windows (highlighted in green). 2. Extract the archive by right-clicking it and selecting "Extract All...". 3. The extracted folder should open automatically. Double-click "demo.bat" to get started. If you're unsure what to try or what's possible in this simple demo, watch the video on the front page for an example. |
Download Now |
C++ Cross Platform Source (VS2008/GCC) | Latest stable source on Github | Download Now |
Version 1.5 - Stable (Windows)
Platform | Title | File |
---|---|---|
Windows 7/8 (32/64 bits) | Installer with Multi-camera/Fiducial Tracking | Download Now |
C++ Windows Source (VS2008) | Latest stable source on Github | Download Now |
Version 2.0 - Developers Preview
Platform | Title | File |
---|---|---|
C++ Windows Source (VS2010) | Latest developer preview on Github | Download Now |
Downloads Archive
File | Date | Size | D/L | MD5 | |
---|---|---|---|---|---|
Version 1.5.0 (Windows - Multicam Official) | |||||
CCV-1.5.exe | 10/29/2011 08:16 pm | 15.2 MB | 31417 | 6fcc86fbbcedf362433ca3a8f0ea35a8 | |
Version 1.4.1 (Windows - Multicam) | |||||
CCV-1.4.1a-win-bin-preview.zip | 06/03/2011 11:02 pm | 11.6 MB | 49626 | bc8fdddaf0b157072d59cc7ab7bc617f | |
Version 1.4 (Windows - Preview) | |||||
CCV-1.4.0-win-bin-preview.zip | 09/11/2010 09:36 pm | 10.3 MB | 26241 | 6c6a16b362d8827b55c69c0fa562863f | Version 1.3 (Windows - Stable) |
CCV-1.3-win-bin.zip | 02/10/2010 06:59 pm | 9.8 MB | 365365 | e61a5102779990e946379ae8c427dc28 | |
CCV-1.3-win-installer.exe | 02/10/2010 06:47 pm | 7 MB | 42615 | b1b844d50b584e76cd7ea09875303014 | |
CCV-1.3-win-src-r195.zip | 10/19/2009 05:14 am | 58.6 MB | 65188 | d9de71a3cb07d69c68a129a0a210021d | |
Version 1.2 (Cross Platform - Stable) | |||||
CCV-1.2-lin-32-bin.tar.gz | 05/05/2009 11:53 pm | 7.8 MB | 46146 | 97e4d550522ec44139258ce1269691db | |
CCV-1.2-lin-64-bin.tar.gz | 05/05/2009 11:51 pm | 6.9 MB | 4313 | 42680ea28a46ae6bdcc03ea1093437c1 | |
CCV-1.2-mac-bin.zip | 05/06/2009 12:21 am | 12.7 MB | 54685 | 0718d80542fed0664ed72be72cc88672 | |
CCV-1.2-win-bin.zip | 05/06/2009 6:33 pm | 12.1 MB | 114077 | c784d6f5bb051444a284f1ffa2ae4521 | |
Version 1.1 (The Beta Release) | |||||
tbeta-1.1-lin-bin.tar.gz | 04/28/2009 01:00 pm | 25.5 MB | 3139 | a7ec7aa5ab6188644ff487279cfec045 | |
tbeta-1.1-mac-bin.zip | 04/28/2009 12:44 pm | 17.1 MB | 3034 | bd7e8444b575a941622805f75455d8c2 | |
tbeta-1.1-win-bin.zip | 04/28/2009 12:30 pm | 6.9 MB | 18595 | 72dd483dc655d0ac9bcaa1322ab27d43 | |
tbeta-1.1.1-win-ps3.zip | 05/06/2009 05:15 am | 4.5 MB | 2954 | 85a4e565d83addd33704e55249ef85e3 | |
Total Downloads | 1100000+ |
See what people are creating with CCV.
CCV Physics
Physics based Tabletop interactionCCV Multicamera Support
Showcasing the new Drag & Drop multicamera support in CCV 1.5.CCF Alpha
Demonstrating the "put that there" concept with the new fusion engine.CCV Finger Tracking
Finger tracking using Kinect Core Vision and peak detection.CCV Learning Shapes
Community Core Vision 1.5 Shapes Learning and DetectionKinect Core Vision
Kinect + CCV = Awesome demos of Kinect being used for CV.CCV Fog Tracking
Project offers ability to see and interact with a static and animated 2D and 3D images.Full Emulation of the Microsoft Surface 2.0 Hardware on DSI table
In this video interaction between CCV 1.5 with Microsoft Surface 2.0 SDK is shownCCV 1.5 Release Video
Release video of the latest version of Community Core Vision 1.5 - GSoC 2011 projectCCV Kinect
"Kinect Core Vision" showcasing Depth Tracking and interaction.CCV 1.5 Features
The new multi camera stitching ability is fully integrated and easy to take 2 or more cameras and stitch them into a single image.CCV Robot Tracking
Top Down Tracking of Robots using CCV and C++ Fluid Client.CCV MT4J Client
A multi-camera version of Community Core Vision (CCV) 1.4 in Java.CCV Mouseless
A great video from MIT Media Lab using CV to replace the mouse.CCV Multiplexer Suite
A multipexer to bundle the data from 8 different CCV instances.CCV Fiberboard
Using fiber optics to replace typical optics to remove size needed.CCV AS3 2D Client
Example of sorting and group of notes on LLP screen in Flash Player 9CCV PyMT Client
A LLP setup using 8 infrared lasers, 2 PS3 Eye cameras in Python.CCV Sphere
A low-cost spherical multitouch display with google maps, photos and videos demos.CCV Hand Tracking
Basic Hand Tracking with CCV 1.3.CCV Camshift Tracking
Tracking of hand orientation using hand tracking module.CCV Whiteboard
Cheap DIY whiteboard demo reel supports annotating and storing that to an image file.CCV Pseudo Hands
Adaptiving UI depending on user's hand position.CCV Depth Mapping
Using FTIR and computer vision to determine depth of touch.CCV MT Storm (Subcycle)
Community member subcycle creates audio/visual remix.CCV Cheap MT Pad
How to Make a Cheap Multitouch Pad - MTmini over 2 million views!Argos Interface Builder
An application built in oF using a custom widget library to provide a drag-and-drop approach to building interfaces.ECHI Head Tracking
Using 6 degrees of freedom head tracking (GSoC 2008)Grafiti Gestures
A Gesture Recognition Framework for Interactive Tabletop Interfaces.X.org TUIO
Demonstration of X.org TUIO Input Driver