ccv
C-based/Cached/Core Computer Vision Library, A Modern Computer Vision Library
A portable C library for computer vision that detects faces, pedestrians, text regions, and objects in images and video, running on desktops, Raspberry Pi, phones, and tablets with minimal dependencies.
CCV stands for C-based, Cached, Core Computer Vision Library. It is an open-source library written primarily in C that provides computer vision algorithms for detecting and analyzing objects in images and video. The project started in 2010 as a personal effort to build a leaner, easier-to-deploy alternative to the computer vision tools available at the time.
Portability is one of the library's defining traits. CCV runs on Mac, Linux, FreeBSD, Windows, iPhone, iPad, Android, and Raspberry Pi. Most of its code compiles with no additional dependencies beyond a standard C compiler, which is what makes it usable on embedded devices and phones alongside full desktop systems. The more computationally intensive parts, specifically the convolutional neural network code, require an external math library, but that subset is optional.
The library includes a collection of algorithms chosen based on real application needs rather than academic novelty. These cover detecting faces in images, classifying what is in a photograph, finding pedestrians and cars, detecting text regions, tracking a moving object across video frames over long periods, and extracting feature points for matching images to each other. The README describes the development philosophy as application-driven, meaning algorithms were added because they were needed for practical work.
One design choice that sets CCV apart is a built-in cache for image preprocessing steps. Many vision tasks require the same preparation work on each image: converting color formats, building image pyramids for different scales, and similar operations. CCV handles these transparently behind the scenes so calling code stays simple while avoiding redundant computation.
The library also connects to a separate deep learning project at libnnc.org. CCV is distributed under the BSD 3-clause license, which is permissive and allows use in commercial software.
Where it fits
- Detect faces in images on a Raspberry Pi or mobile device using CCV's dependency-free C implementation.
- Track a moving object across video frames in a robotics or surveillance application.
- Detect text regions in images as a preprocessing step for document scanning or OCR.