Created
December 17, 2016 13:08
-
-
Save pliablepixels/34b484cca1c23ae9493c5d2e57f0bde8 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#include <base/ozApp.h> | |
#include <base/ozListener.h> | |
#include <providers/ozMemoryInputV1.h> | |
#include <processors/ozRateLimiter.h> | |
#include <processors/ozShapeDetector.h> | |
#include <processors/ozFaceDetector.h> | |
#include <processors/ozAVFilter.h> | |
//#include processors/ozRecognizer.h> | |
#include <consumers/ozVideoRecorder.h> | |
#include <consumers/ozMemoryTriggerV1.h> | |
#include <libgen/libgenDebug.h> | |
#include <protocols/ozHttpController.h> | |
#include <processors/ozImageScale.h> | |
#include <stdio.h> | |
#include <iostream> | |
using namespace std; | |
int main( int argc, const char *argv[] ) | |
{ | |
debugInitialise( "example8", "", 2 ); | |
Info( "Starting" ); | |
avInit(); | |
Application app; | |
Listener listener; | |
app.addThread( &listener ); | |
int monitor = 4; // monitor ID I want to intercept | |
char idString[32] = ""; | |
sprintf( idString, "origmonitor%d", monitor ); | |
// you need to put in exact size here, also use 24bpp for now in ZM | |
MemoryInputV1 *input = new MemoryInputV1( idString, "/dev/shm", monitor, 50, 1280, 960 ); | |
app.addThread( input ); | |
sprintf( idString, "limit%d", monitor ); | |
RateLimiter *limiter = new RateLimiter( idString , 10 ); | |
limiter->registerProvider( *input ); | |
app.addThread( limiter ); | |
sprintf( idString, "monitor%d", monitor ); | |
// If you want use our filters to downsize the image | |
//VideoFilter *resizer = new VideoFilter("filter", "scale=iw/2:-1"); | |
//resizer->registerProvider(*limiter); | |
app.addThread(resizer); | |
sprintf( idString, "detect%d", monitor ); | |
//ShapeDetector *detector = new ShapeDetector( idString,"../models/person.svm",ShapeDetector::OZ_SHAPE_MARKUP_OUTLINE ); | |
FaceDetector *detector = new FaceDetector( idString,"../models/shape_predictor_68_face_landmarks.dat" ); | |
detector->registerProvider( *resizer ); | |
//detector->registerProvider( *input ); | |
app.addThread( detector ); | |
// set up feeds you can view on the side | |
sprintf( idString, "trigger%d", monitor ); | |
MemoryTriggerV1 *trigger = new MemoryTriggerV1( idString , "/dev/shm", monitor ); | |
trigger->registerProvider( *detector ); | |
app.addThread( trigger ); | |
HttpController httpController( "http", 9292 ); | |
httpController.addStream( "live",*input ); | |
httpController.addStream( "detect", *detector ); | |
listener.addController( &httpController ); | |
cout << "Watching for shapes or faces in monitor:" << monitor << endl; | |
app.run(); | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment