DownloadHAARPHP
__Feature Detection Library for PHP__
Based on Viola-Jones Feature Detection Algorithm using Haar Cascades
and improvement Viola-Jones-Lienhart et al Feature Detection Algorithm
This is a port of OpenCV C++ Haar Detection and of JViolaJones Java) to PHP.
there is also a javascript version: HAAR.js
Contents
How to Use
You can use the __existing openCV cascades__ to build your detectors.
To do this just transform the __opencv xml file__ to PHP format
using the __haartophp__ (php) tool (in cascades folder)
__examples:__
to use opencv's haarcascades_frontalface_alt.xml in php do:
haartophp haarcascades_frontalface_alt.xml > haarcascades_frontalface_alt.php
this creates a php file: haarcascades_frontalface_alt.php
which you can include in your php application (see examples)
the variable to use in php is similarly: $haarcascades_frontalface_alt
Detector Methods
__constructor()__ new HaarDetector($haardata);
__Explanation of parameters__
-
`$haardata` : The actual haardata (as generated by `haartophp` tool), this is specific per feature, openCV haar data can be used.
__clearCache()__ $detector->clearCache();
Clear any cached image data and haardata in case space is an issue. Use image method and cascade method (see below) to re-set image and haar data
__cascade()__ $detector->cascade($haardata);
Allow to use same detector (with its cached image data), to detect different feature on same image, by using another cascade. This way any image pre-processing is done only once
__Explanation of parameters__
-
`$haardata` : The actual haardata (as generated by `haartophp` tool), this is specific per feature, openCV haar data can be used.
__image()__ $detector->image($GDImage, $scale = 1.0);
__Explanation of parameters__
-
`$GDImage` : an actual `GD` Image object.
-
`$scale` : The percent of scaling from the original image, so detection proceeds faster on a smaller image (default __1.0__ ). __NOTE__ scaling might alter the detection results sometimes, if having problems opt towards 1 (slower)
__selection()__ $detector->selection('auto'|array|feature|$x [,$y, $width, $height]);
Get/Set a custom region in the image to confine the detection process only in that region (eg detect nose while face already detected)
__Explanation of parameters__
-
`1st parameter` : This can be the string `'auto'` which sets the whole image as the selection, or an array ie: `array('x'=>10, 'y'=>'auto', 'width'=>100, 'height'=>'auto')` (every param set as `'auto'` will take the default image value) or a detection rectangle/feature, or a x coordinate (along with rest coordinates).
-
`$y` : (Optional) the selection start y coordinate, can be an actual value or `'auto'` (`$y=0`)
-
`$width` : (Optional) the selection width, can be an actual value or `'auto'` (`$width=image.width`)
-
`$height` : (Optional) the selection height, can be an actual value or `'auto'` (`$height=image.height`)
The actual selection rectangle/feature is available as $this->selection() or $detector->selection() with no parameters
__cannyThreshold()__ $detector->cannyThreshold(array('low'=> lowThreshold, 'high'=> highThreshold));
Set the thresholds when Canny Pruning is used, for extra fine-tuning.
Canny Pruning detects the number/density of edges in a given region. A region with too few or too many edges is unlikely to be a feature.
Default values work fine in most cases, however depending on image size and the specific feature, some fine tuning could be needed
__Explanation of parameters__
-
`low` : (Optional) The low threshold (default __20__ ).
-
`high` : (Optional) The high threshold (default __100__ ).
__detect()__ $detector->detect($baseScale = 1, $scale_inc = 1.25, $increment = 0.1, $min_neighbors = 1 , $epsilon = 0.2, $doCannyPruning = false);
__Explanation of parameters__ (JViolaJones Parameters)
-
`$baseScale` : The initial ratio between the window size and the Haar classifier size (default __1__ ).
-
`$scale_inc` : The scale increment of the window size, at each step (default __1.25__ ).
-
`$increment` : The shift of the window at each sub-step, in terms of percentage of the window size (default __0.1__ ).
-
`$min_neighbors` : The minimum numbers of similar rectangles needed for the region to be considered as a feature (avoid noise) (default __1__ )
-
`$epsilon` : Epsilon value that determines similarity between detected rectangles. `0` means identical (default __0.2__ )
-
`$doCannyPruning` : enable Canny Pruning to pre-detect regions unlikely to contain features, in order to speed up the execution (optional default __false__ ).
__Examples included with face detection__
Where to find Haar Cascades XML files to use for feature detection
TODO
-
[ ] keep up with the changes in openCV cascades xml format (will try)
ChangeLog
__1.0.6__
* correction when selection is used again (revert to previous code)
__1.0.5__
* correction when selection is used, use same version as HAAR.js
* implicit type casting warnings in php 8 handled
__1.0.2__
* port code from latest version of opencv
__1.0.1__
* inline detection routine for further speed
* update test examples with many faces detection
__1.0.0__
* correct detection on custom selection
* refactor code
__0.4__
* refactor code (make smaller)
* add clearCache method, to delete any stored/cached image data in the detector (in case space is an issue)
* add the tilted feature (Lienhart et al, extension)
* make new haartophp tool, output format changed, __make sure to re-convert your .php haar cascades!!__
* tidy up the repo
* fix some typos, edits
__0.3__
* add new methods (_selection_ , _cascade_ , _cannyThreshold_ )
* use fixed-point arithmetic if possible (eg gray-scale, canny computation)
* optimize array indexing, remove unnecessary multiplications
* reduce unnecessary loops, inline code instead of method calling for speed
* rewrite _merge_ method (features might be slightly different now)
* features are now generic classes not arrays
* code refactor/fixes
* update readme, add method documentation
__0.2__
* add haartophp tool in php (all-php solution)
* optimize array operations, refactor, etc..
__0.1__
* initial release
see also:
-
Abacus advanced Combinatorics and Algebraic Number Theory Symbolic Computation library for JavaScript, Python
-
MOD3 3D Modifier Library in JavaScript
-
Geometrize Computational Geometry and Rendering Library for JavaScript
-
Plot.js simple and small library which can plot graphs of functions and various simple charts and can render to Canvas, SVG and plain HTML
-
HAAR.js image feature detection based on Haar Cascades in JavaScript (Viola-Jones-Lienhart et al Algorithm)
-
HAARPHP image feature detection based on Haar Cascades in PHP (Viola-Jones-Lienhart et al Algorithm)
-
FILTER.js video and image processing and computer vision Library in pure JavaScript (browser and node)
-
Xpresion a simple and flexible eXpression parser engine (with custom functions and variables support), based on GrammarTemplate, for PHP, JavaScript, Python
-
Regex Analyzer/Composer Regular Expression Analyzer and Composer for PHP, JavaScript, Python
-
GrammarTemplate grammar-based templating for PHP, JavaScript, Python
-
codemirror-grammar transform a formal grammar in JSON format into a syntax-highlight parser for CodeMirror editor
-
ace-grammar transform a formal grammar in JSON format into a syntax-highlight parser for ACE editor
-
prism-grammar transform a formal grammar in JSON format into a syntax-highlighter for Prism code highlighter
-
highlightjs-grammar transform a formal grammar in JSON format into a syntax-highlight mode for Highlight.js code highlighter
-
syntaxhighlighter-grammar transform a formal grammar in JSON format to a highlight brush for SyntaxHighlighter code highlighter
-
SortingAlgorithms implementations of Sorting Algorithms in JavaScript
-
PatternMatchingAlgorithms implementations of Pattern Matching Algorithms in JavaScript
-
CanvasLite an html canvas implementation in pure JavaScript
-
Rasterizer stroke and fill lines, rectangles, curves and paths, without canva?
-
Gradient create linear, radial, conic and elliptic gradients and image patterns without canvas
-
css-color simple class to parse and manipulate colors in various formats
|