Sample code/Cpp/Computer Vision
From GumstixDocsWiki
Computer Vision on the Gumstix
Key words: Computer Vision, Image Processing, Video Processing
At Brigham Young University, we are starting to get a set of software put together for doing image/video processing on the gumstix using fairly optimized c and c++ code. Here are a few resources I have found useful in developing computer vision applications on the gumstix:
- Video4Linux This includes information about how to get webcam support compiled into the root filesystem on the gumstix. This works with many webcams; personally, I use the Logitech QuickCam 4000.
- [w3cam] This project by Rasca Berlin includes a program called vidcat which can be compiled on the gumstix and demonstrates how to capture a frame using video4linux.
By the way, the options I had to use to get the capture to work properly on the gumstix using the Logitech QuickCam 4000 were: -b (binary) -p y (yuv420p palette). The size can be 160x120, 320x240 or 640x480, take your pick.
- [Logitech Quickcam API] The PWC driver (which stands for Philips Webcam) for linux has several enhancements for setting parameters on the camera. This allows for setting shutter speed, brightness, contrast, etc. I have tried many of the ioctl commands and have found them to work well in general.
- [TNT Template Matrix Library] The TNT Library has good C++ functions for common Linear Algebra problems like Cholesky Factorization, QR and LU decomposition and SVD solutions. These come in handy in Computer Vision Algorithms frequently.
- [embedcv] This is a useful library for performing fast image processing algorithms such as Morphological operations (erode, dilate, open, close), Sobel edge convolutions, and color segmentation. Good stuff. This is great because the algorithms have in general been fine-tuned for ARM-type processors, using only integer operations.
- [Intel's OpenCV] This is a great library, though I haven't gotten it fully working on the gumstix. It has, however, proved to be key to understanding how to implement algorithms and provides a staging area for developing algorithms before implementing them on an embedded system. Intel's Performance Primitives can be purchased as well, providing byte-optimized code for processors like the XScale and x86.
- [Canny Edge Detection] Tutorial and Sample Code (TRIPOD)

