bool StopMotionController::load(const string &dirPath) { mFrames.clear(); ofDirectory dir; if (dir.listDir(dirPath) == 0) return false; for (auto innerData : dir) { ofLogNotice() << "load: " << dir.path(); if (innerData.isDirectory()) { ofDirectory innerDir; innerDir.listDir(innerData.path()); mFrames.push_back(ofPtr<Frame>(new Frame())); vector<ofPixels> *imageArray = &mFrames.back()->imageArray; for (auto innerFile : innerDir) { imageArray->push_back(ofPixels()); if (ofLoadImage(imageArray->back(), innerFile.getAbsolutePath()) == false) { ofLogError() << "failed load image: " << innerFile.path(); imageArray->pop_back(); } ofLogNotice() << "load image: " << innerFile.path(); } if (imageArray->empty() == false) mFrames.back()->currentIndex = 0; } } if (mFrames.empty()) return false; mCurrentFrame = mFrames[0].get(); return true; }
bool ofxImageSequence::loadSequence(string prefix, string filetype, int startDigit, int endDigit, int numDigits) { unloadSequence(); char imagename[1024]; stringstream format; int numFiles = endDigit - startDigit+1; if(numFiles <= 0 ){ ofLogError("ofxImageSequence::loadSequence") << "No image files found."; return false; } if(numDigits != 0){ format <<prefix<<"%0"<<numDigits<<"d."<<filetype; } else{ format <<prefix<<"%d."<<filetype; } for(int i = startDigit; i <= endDigit; i++){ sprintf(imagename, format.str().c_str(), i); filenames.push_back(imagename); sequence.push_back(ofPixels()); loadFailed.push_back(false); } loaded = true; lastFrameLoaded = -1; loadFrame(0); width = sequence[0].getWidth(); height = sequence[0].getHeight(); return true; }
void ofxSwipeable::load(vector<string> path, float w, float h, float f){ vector<ofPixels> pix; pix.assign(path.size(),ofPixels()); for(int i=0;i<path.size();i++){ ofLoadImage(pix[i], path[i]); } load(pix,w,h,f); }
//-------------------------------------------------------------- ofPixels& ofxImageSegmentation::segment(ofPixels& image){ if(!image.isAllocated()){ ofLogError("ofxImageSegmentation::segment") << "input image must be allocated"; return segmentedPixels; } if(!segmentedPixels.isAllocated() || segmentedPixels.getWidth() != image.getWidth() || segmentedPixels.getHeight() != image.getHeight() || segmentedPixels.getImageType() != image.getImageType() ) { segmentedPixels.allocate(image.getWidth(), image.getHeight(), OF_IMAGE_COLOR); segmentedMasks.clear(); } image11<rgb> *input = loadPixels(image); image11<rgb> *seg; image11<char> **masks; numSegments = segment_image(input, sigma, k, min, seg, masks); memcpy(segmentedPixels.getPixels(),seg->data,segmentedPixels.getWidth()*segmentedPixels.getHeight()*segmentedPixels.getBytesPerPixel()); //calculate segment masks if(numSegments > 0){ while(segmentedMasks.size() < numSegments){ segmentedMasks.push_back(ofPixels()); segmentedMasks.back().allocate(image.getWidth(), image.getHeight(), OF_IMAGE_GRAYSCALE); } int bytesPerMask = segmentedMasks[0].getWidth()*segmentedMasks[0].getHeight()*segmentedMasks[0].getBytesPerPixel(); for(int i = 0; i < numSegments; i++){ memcpy(segmentedMasks[i].getPixels(),masks[i]->data,bytesPerMask); } } //This is really slow to do, find a way to preserve memory delete input; delete seg; for(int i = 0; i < numSegments; i++){ delete masks[i]; } delete [] masks; return segmentedPixels; }
bool ofxImageSequence::preloadAllFilenames() { ofDirectory dir; if(extension != ""){ dir.allowExt(extension); } if(!ofFile(folderToLoad).exists()){ ofLogError("ofxImageSequence::loadSequence") << "Could not find folder " << folderToLoad; return false; } int numFiles; if(maxFrames > 0){ numFiles = MIN(dir.listDir(folderToLoad), maxFrames); } else{ numFiles = dir.listDir(folderToLoad); } if(numFiles == 0) { ofLogError("ofxImageSequence::loadSequence") << "No image files found in " << folderToLoad; return false; } // read the directory for the images #ifdef TARGET_LINUX dir.sort(); #endif for(int i = 0; i < numFiles; i++) { filenames.push_back(dir.getPath(i)); sequence.push_back(ofPixels()); loadFailed.push_back(false); } return true; }
ColorDepthShaderEffect::ColorDepthShaderEffect(const std::string effectName, const int width, const int height, const std::string& vertexShader, const std::string& fragmentShader, const std::string& geometryShader) : ShaderEffect(effectName, vertexShader, fragmentShader, geometryShader) { m_lookup = ofPixels(); m_lookup.allocate(256, 1, OF_IMAGE_COLOR_ALPHA); m_lookupOffset = 0; m_lookupStepSize = 50; m_saturationValue = 255.0f; m_brightnessValue = 255.0f; m_nearClip = 500.0f; m_farClip = 4000.0f; buildLookUpTable(); m_lookupTexture.allocate(256, 1, GL_RGB); }