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;
}
Esempio n. 6
0
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);
}