Information
This C++ library is designed to be easy to use and portable for fast video saving, loading and display. It supports OpenGL and X Windows. This library is free software, see LICENSE file for details
Features
Language
- Modern C++14 design
- Optimized assembly code
- Extensive use of exceptions
- Easy access to many sources of video
- Easy loading and saving of many kinds of image
- Plenty of low-level comptuer vision functions
- OpenGL wrappers
Imaging
- Type-safe easy to use images
- Flexible loading and saving from a variety of types:
- Native
- PNM
- BMP
- ASCII text
- FITS
- PS (saving only)
- EPS (saving only)
- CVD (a custom type which supports fast, lossless compression of greyscale, RGB and Bayer images)
- External libraries required
- JPEG
- TIFF
- PNG
- 1/8/16/32 bit signed and unsigned integer and 32/64 bit floating point images in greyscale, RGB and RGBA.
- Optimum bit depth and colour depth selected automatically
- Image grabbing from video sources:
- Linux
- Video for Linux 2 devices
- Firewire IIDC cameras
- Firewire over USB cameras produced by PointGrey - see http://www.ptgrey.com/products/fireflymv/index.asp
Use DVBuffer3 for that and make sure to set an image resolution
- Whichever devices FFMPEG supports
- OSX
- AVFoundation devices via FFMPEG
- All UNIX platforms
- Live capture from HTTP server push JPEG cameras.
- All platforms
- AVI and MPEG files and other devices (i.e. whatever FFMPEG supports)
- lists of images
- Server push multipart JPEG streams.
- libUVC for USB video camera streams
- Convenient run-time selection using a URL-like syntax
- Colorspace conversions on images and video streams
- Various image processing tools
- FAST corner detection
- Harris/Shi-Tomasi corner detection
- Connect components analysis
- Image interpolation and resampling
- Convolutions
- Drawing in to images
- Flipping, pasting, etc
- Interpolation, warping and resampling
- Integral images
- Distance transform
- Camera calibration support: Linear, Cubic, Quintic and Harris
- Program to calibrate cameras from video
Portability
libCVD currently works well on Linux, OSX, Cygwin, MinGW (and therefore most likely any unix-like system), and is written in standards compliant C++14 with cross compilation in mind. It's tested with both GCC and LLVM.
It's likely that it will compile under VisualStudio, but there's no current project file maintainer.
libCVD now has a minimalist configuration system. You can simply chuck any of the sources into your project. Some configuration may be needed for CVD's interface to external libraries.
-Well tested (current):
Compiling
The normal system works:
./configure
make
make install
libCVD fully supports parallel builds (make -j48
for instance).
OSX Compilation notes
To build libCVD in 32 bit mode, use the \c configure_osx_32bit script instead of directly calling the configure script.