TetsuakiBaba / ofxOpenCvDnnSegmentation

ofxOpenCvDnnSegmentation is an realtime segmentation addon for openframeworks, which uses opencv dnn modules.
MIT License
11 stars 2 forks source link
addon enet fcn ofxcv opencv opencv-dnn-modules openframeworks openframeworks-addon realtime-segmentation-addon

ofxOpenCvDnnSegmentation

Description

ofxOpenCvDnnSegmentation is an realtime segmentation addon for openframeworks, which uses opencv dnn modules.

OpenCV v.3.3.1 or upper includes some dnn modules in their own package. Therefore I designed ofxOpenCvDnnSegmentation with OpenCV v.3.3.1 or upper version. It works with ENET or FCN network.

sample gif sample gif

Usage

See Examples for more details. You can find how to get each class detected segmentation with ofPolyline.

void setup()
{
    ofImage img;
    img.load(ofToDataPath("sample.jpg"));
    segmentation.setup(ofToDataPath("dnn/enet-model-best.net"),ofToDataPath("dnn/classlist.txt"));
    segmentation.update(img.getPixels());
}
void draw()
{
    ofBackground(0);
    segmentation.draw(0,0,ofGetWidth(), ofGetHeight());
}

Install

1. Clone ofxOpenCvDnnSegmentation to your of/addon directory

$ git clone https://github.com/TetsuakiBaba/ofxOpenCvDnnSegmentation.git

2. Download OpenCV.framework to ofxOpenCvDnnSegmentation/libs directory.

$ curl -O http://tetsuakibaba.jp/tmp/opencv2.framework.zip
$ unzip opencv2.framework.zip

Or you may build your own opencv.framework from opencv source. ( https://tetsuakibaba.jp/ws/doku.php?id=opencv_dnn:opencv2.framework )

Getting Started with Examples/single_image_or_video.

1. Download models

$ sh getModels.sh

2. Update single_image_or_video with the projectGenerator. Please be sure to include ofxOpenCvDnnSegmentation and ofxCv

3. Run

Compatibility

Sample Images

ENET results, Inference time: around 70[ms]

sample02 sample03

FCN Result. Inference time: around 1,600[ms]

sample04

Licence

Author

TetsuakiBaba

Reference

  1. https://docs.opencv.org/3.4/d4/d88/samples_2dnn_2segmentation_8cpp-example.html
  2. ENET
  3. FCN