From 80863dd23b2c3e2ae1b26a366e1adc956911c747 Mon Sep 17 00:00:00 2001 From: Tim Redfern Date: Sat, 1 Dec 2018 18:38:19 +0000 Subject: colour clipped output --- gui/src/ofApp.cpp | 49 +++++++++++++++++++++++++++++-------------------- gui/src/ofApp.h | 2 ++ 2 files changed, 31 insertions(+), 20 deletions(-) (limited to 'gui/src') diff --git a/gui/src/ofApp.cpp b/gui/src/ofApp.cpp index 6d90c47..689048c 100644 --- a/gui/src/ofApp.cpp +++ b/gui/src/ofApp.cpp @@ -53,7 +53,7 @@ void ofApp::setup(){ soundStream.setup(this,0, 1, sampleRate, bufferSize, 1); //loadSong("12 Ferric Appetite.aiff"); - loadSong("passades/1 The Ninth Set-sector1:sector2pt.1.aiff"); + loadSong("12 Ferric Appetite.aiff"); //============================ gui @@ -76,7 +76,11 @@ void ofApp::setup(){ chaosgui.update_sliders(); drawgui.setup("drawing","",10,0); + + drawgui.add(contour_adaptive.setup("adaptive", true)); drawgui.add(contour_threshold.setup("threshold", 140, 0, 255)); + drawgui.add(contour_adaptive_window.setup("window", 0.5, 0, 1.0)); + drawgui.add(contour_simplify.setup("simplify", 0.8, 0.0, 10.0)); drawgui.add(contour_useColour.setup("use colour", true)); drawgui.add(laser_R.setup("red", 140, 0, 255)); @@ -110,7 +114,7 @@ void ofApp::setup(){ audiogui.add(plotter.bars.set("bars",true)); audiogui.add(plotter.mirror.set("mirror",false)); audiogui.add(plotter.width.set("point width", 2, 1, 256)); - audiogui.add(plotter.num_points.set("num points", 50, 1, 64)); + audiogui.add(plotter.num_points.set("num points", 50, 1, 255)); audiogui.add(plotter.history_size.set("num plots", 5, 1, 64)); audiogui.add(plotter.translate.set("translate",ofVec2f(0,0),ofVec2f(-50,-50),ofVec2f(50,50))); audiogui.add(plotter.rotate.set("rotate",0.0f,-10.0f,10.0f)); @@ -733,8 +737,12 @@ void ofApp::drawOutput(ofEventArgs & args){ grayImage.clear(); } grayImage=colorImg; - //grayImage.threshold(contour_threshold); - grayImage.adaptiveThreshold(grayImage.getWidth()/8, contour_threshold,false,true); + if(contour_adaptive){ + grayImage.adaptiveThreshold(grayImage.getWidth()*contour_adaptive_window, contour_threshold,false,true); + } + else { + grayImage.threshold(contour_threshold); + } contourFinder.findContours(grayImage, 20, (grayImage.getWidth()*grayImage.getHeight())/3, 10, true); for (int i = 0; i < contourFinder.nBlobs; i++){ colourPolyline shape; @@ -832,24 +840,25 @@ void ofApp::drawOutput(ofEventArgs & args){ vector clippedOutput; if (mask.size()&&use_mask){ - clipper.Clear(); - clipper.addPolylines(mask, ClipperLib::ptClip); - vector shapes; //TODO make clipper clip colourpolylines + for (auto& poly: transformedOutput) - { + { + clipper.Clear(); + clipper.addPolylines(mask, ClipperLib::ptClip); + vector shapes; //TODO make clipper clip colourpolylines shapes.push_back(poly); - } - clipper.addPolylines(shapes,ClipperLib::ptSubject); - vector clipped; - if (invert_mask){ - clipped = clipper.getClippedLines(ClipperLib::ctDifference); - }else { - clipped = clipper.getClippedLines(ClipperLib::ctIntersection); - } - for (auto& clip: clipped) - { - clip.simplify(contour_simplify); - clippedOutput.push_back(colourPolyline(clip,ofColor(laser_R,laser_G,laser_B))); + clipper.addPolylines(shapes,ClipperLib::ptSubject); + vector clipped; + if (invert_mask){ + clipped = clipper.getClippedLines(ClipperLib::ctDifference); + }else { + clipped = clipper.getClippedLines(ClipperLib::ctIntersection); + } + for (auto& clip: clipped) + { + clip.simplify(contour_simplify); + clippedOutput.push_back(colourPolyline(clip,poly.getColourAt(0))); + } } } else { diff --git a/gui/src/ofApp.h b/gui/src/ofApp.h index 9098bef..838b7f8 100644 --- a/gui/src/ofApp.h +++ b/gui/src/ofApp.h @@ -181,7 +181,9 @@ class ofApp: public ofBaseApp, public ofxMidiListener { ofxPanel drawgui; + ofxToggle contour_adaptive; ofxIntSlider contour_threshold; + ofxFloatSlider contour_adaptive_window; ofxFloatSlider contour_simplify; ofxToggle contour_useColour; ofxIntSlider laser_R; -- cgit v1.2.3