QString RotoCanvas::getLayersFolderPath(QFileInfo frameFI, int frameNumber, bool createEnable) { //such as <sequenceName>/frames/<frameNumber>/layers QString seqName=RotoCanvas::getSeqName(frameFI); //qInfo() << "seqName:" << seqName; //see also qInfo,qDebug,qWarning,qCritical,qFatal QString seqPath=frameFI.dir().filePath(seqName); QDir seqDir(seqPath); if (createEnable) { if (!seqDir.exists()) frameFI.dir().mkdir(seqName); } QString framesPath=seqDir.filePath("frames"); //qInfo()<<"framesPath:"<<framesPath; QDir framesDir(framesPath); if (createEnable) { if (!framesDir.exists()) seqDir.mkdir("frames"); } QString thisFramePath=framesDir.filePath(QString::number(frameNumber)); //qInfo()<<"thisFramePath:"<<thisFramePath; QDir thisFrameDir=QDir(thisFramePath); if (createEnable) { if (!thisFrameDir.exists()) framesDir.mkdir(QString::number(frameNumber)); } QString layersPath=QDir(thisFramePath).filePath("layers"); //qInfo()<<"layersPath:"<<layersPath; QDir layersDir=QDir(layersPath); if (createEnable) { if (!layersDir.exists()) thisFrameDir.mkdir("layers"); } return layersPath; }
void BodyBase::setup(string seqDirPath) { // - crop to roi // - chroma keying // - save it as tex vector float chromaThresh = 0.0; ofColor keyColor; ofxXmlSettings settings; settings.load(seqDirPath + "/settings.xml"); settings.pushTag("roi"); roi.set(settings.getValue("x", 0), settings.getValue("y", 0), settings.getValue("w", 1920), settings.getValue("h", 1080)); settings.popTag(); settings.pushTag("chroma"); chromaThresh = settings.getValue("thresh", 0.0); keyColor.set(settings.getValue("r", 0), settings.getValue("g", 0), settings.getValue("b", 0)); settings.popTag(); settings.pushTag("anchor"); anchor.x = settings.getValue("x", 0); anchor.y = settings.getValue("y", 0); settings.popTag(); settings.clear(); seqTweak.load("shaders/common/simpleVert.vert", "shaders/scene/seqTweak.frag"); ofDirectory seqDir(seqDirPath); seqDir.listDir(); for (int i = 0; i < seqDir.size(); i++) { ofFile f = seqDir.getFile(i); if (isImgFile(f.getExtension())) { ofFbo fbo; seq.push_back(fbo); ofTexture tex; ofLoadImage(tex, f.getAbsolutePath()); seq.back().allocate(roi.getWidth(), roi.getHeight()); seq.back().begin(); ofClear(0); Globals::chromaKey.begin(); Globals::chromaKey.setUniform3f("chromaKeyColor", ofVec3f(keyColor.r/255.0, keyColor.g/255.0, keyColor.b/255.0)); Globals::chromaKey.setUniform1f("threshold", chromaThresh); tex.drawSubsection(0, 0, roi.getWidth(), roi.getHeight(), roi.x, roi.y); Globals::chromaKey.end(); seq.back().end(); // seq.back().setAnchorPoint(anchor.x, anchor.y); tex.clear(); } } seqDir.close(); tweaker.allocate(roi.getWidth(), roi.getHeight()); }