示例#1
0
//--------------------------------------------------------------
void testApp::update(){

	ofBackground(100,100,100);

	vidGrabber.update();

	if (vidGrabber.isFrameNew()){
        calculateCaptureFramerate();
	}

    sprintf(buf,"App framerate : %f%s",ofGetFrameRate(), vidGrabber.f ? " (RECORDING)" : "");

}
//--------------------------------------------------------------
bool CameraInput::update(){

	vidGrabber.update();
	
	bool newFrame = vidGrabber.isFrameNew();
	if (newFrame){
		
        calculateCaptureFramerate();
		camImage->setFromPixels( vidGrabber.getPixels(), camWidth, camHeight );

		if (camFormat == VID_FORMAT_RGB){
			if (warp)
				grayImage = rgbImage;
			else
				grayWarpImage = rgbImage;
		}
		
		if (camFormat == VID_FORMAT_GREYSCALE){
			if (warp)
				grayWarpImage.warpIntoMe( grayImage, warper.dstPoints , warper.srcPoints);
			else
				grayWarpImage = grayImage;
		}
		
		//now grayWarpImage has the image
		
		if (bgSubtraction){			
			//absDiffWithCutoffInverted( &bgImage, &grayWarpImage, &diffImage, bgSubtractionCutOff );
			cvAbsDiff(bgImage.getCvImage(), grayWarpImage.getCvImage(), diffImage.getCvImage());
			diffImage.flagImageChanged();
			binaryImage = diffImage;
		}else {
			binaryImage = grayWarpImage;
		}

		if (threshold)
			binaryImage.threshold(thresholdVal, false);

		if (invert)
			binaryImage.invert();
		
		if ( numErosions > 0 ){				
			for (int i=0; i<numErosions; i++)
				binaryImage.erode();
		}		

		if ( numDilations > 0 ){				
			for (int i=0; i<numDilations; i++)
				binaryImage.dilate();
		}
			
		if (bgSubtraction){
			cvRunningAvg(grayWarpImage.getCvImage(), accImage.getCvImage(), bgAccumRate);
			cvConvert( accImage.getCvImage(), bgImage.getCvImage() );
			bgImage.flagImageChanged();
		}
	}
	
	if (uiState == SET_PROCESSING_SETTINGS){
		processingPanel.update();
	}
	
	if (uiState == SET_IMAGE_WARP){
		warpingPanel.update();
	}
	
	return newFrame;

}