Shape Detection, Arbitrary Filters, Oh My!
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 ring.com/youtube — 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 );