Shape Detection, Arbitrary Filters, Oh My!

Sep 8, 2016 · 2 min read
Image for post
Image for post

We’ve been making some really cool updates to ozone. Remember, one of our key missions is to enable innovation for CCTV/IP camera systems and to be able to do that, we need to provide you with powerful components wrapped in a layer of “easy to use” interfaces.

Well, last week, we added arbitrary shape detection to oZone (via dlib). Using the new ShapeDetect class, creating your own ShapeDetector is as simple as:

ShapeDetector peopleDetector( “people.svm”, ShapeDetector::OZ_SHAPE_MARKUP_OUTLINE, peopleLimiter ); app.addThread( &peopleDetector );

What is important here is you can supply arbitrary training models that you can fine tune for your detection needs. Training is really simple. We are currently creating our own training for overhead CCTV cameras.

Real time shape detection is a very important step forward. It now allows us to train models to detect anything we want to focus on.

The awesome part is you can run MotionDetection, FaceDetection and ShapeDetection all at the same time with oZone! To prove it, here is a video from youtube we ran all our detection classes together on. (Watch this in theatre mode to see the detection points easily). As you might note, motion detect (standard algorithm in budget cameras & NVR systems) is way too falsey. FaceDetection barely works as faces are not really completely identifiable in this fast moving video, while ShapeDetect, trained with a quick people detection approach works reasonably well! The important part is you can keep re-training and creating new models for your special situations and all you need to do is pass that file to oZone!

Checkout this video (courtesy — I lost the link). Note how well shapedetector generally works when this guy gets into the house!

Or this video:

Arbitrary Filters too

While we are at it, we’ve also added arbitrary AV filter support too. There will be a dedicated blog post about this later, but Filters are incredibly powerful tools, made easier with oZone’s component architecture.

Here is an example to convert a live feed (or recorded feed) to black and while while on the fly

VideoFilter peopleFilter( “hue=s=0, scale=iw/2:-1”, people ); 
VideoFilter peopleFilter( “people-filter”, “scale=iw/2:-1” );
peopleFilter.registerProvider( people );
app.addThread( &peopleFilter );

oZone Security

Enabling Innovation in Video Applications

Welcome to a place where words matter. On Medium, smart voices and original ideas take center stage - with no ads in sight. Watch
Follow all the topics you care about, and we’ll deliver the best stories for you to your homepage and inbox. Explore
Get unlimited access to the best stories on Medium — and support writers while you’re at it. Just $5/month. Upgrade

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store