Skip to content

Instantly share code, notes, and snippets.

@pliablepixels
Created December 17, 2016 13:08
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save pliablepixels/34b484cca1c23ae9493c5d2e57f0bde8 to your computer and use it in GitHub Desktop.
Save pliablepixels/34b484cca1c23ae9493c5d2e57f0bde8 to your computer and use it in GitHub Desktop.
#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