Sto tentando di simulare una foto a lunga esposizione combinando le immagini (fotogrammi) in un'immagine e eseguendo operazioni basate su un alfa preimpostato. Lo sto facendo su un iPhone e attualmente ho la lunghezza del video impostata su 1 secondo (30 fotogrammi). L'alpha è impostato su 1.0/frameCount
, tuttavia ho codificato in modo rigido in 30 per rappresentare un secondo di 30 acquisizione video FPS. Fermo le operazioni una volta raggiunto un secondo di video/30 fotogrammi. L'idea è che l'utente può impostare un timer per x secondi e io farò i calcoli per capire quanti fotogrammi permettere.Simulare l'esposizione lunga dai fotogrammi video OpenCV
Ecco il codice che sto usando:
- (void)processImage:(Mat&)image
{
if (_isRecording) {
// first frame
double alpha = 1.0/30;
if (_frameCount == 0) {
_exposed = image;
_frameCount++;
} else {
Mat exposed = _exposed.clone();
addWeighted(exposed, alpha, image, 1.0 - alpha, 0.0, _exposed);
_frameCount++;
}
// stop and save image
if (_frameCount == 30) {
_isRecording = NO;
_frameCount = 0;
cvtColor(_exposed, _exposed, CV_BGRA2RGB, 30);
UIImage *exposed = [LEMatConverter UIImageFromCVMat:_exposed];
UIImageWriteToSavedPhotosAlbum(exposed, nil, nil, nil);
NSLog(@"saved");
}
}
}
Quando eseguo questo codice Io fondamentalmente tornare un fermo immagine che sembra come se si tratta di un singolo fotogramma. Ecco un esempio:
Qualcuno sa come posso produrre l'effetto desiderato di un'immagine lunga esposizione da fotogrammi video dato che so quanti fotogrammi ci sarà?
problema nel codice è che si sta facendo la media di solo 1 fotogrammi 30 volte. – Abc