Scene Detector – Oggetto COM rilevamento scene video

Descrizione

Scene Detector è un potente componente COM per il riconoscimento e l'elaborazione delle scene. Incorpora le pluripremiate tecnologie HandySaw DS per il riconoscimento ottico delle scene estremamente accurato e veloce. È orientato alle aziende di software e agli sviluppatori che desiderano estendere i propri prodotti. Un componente COM è un modulo software riutilizzabile che segue l'architettura COM ( Component Object Model ), consentendone l'utilizzo in vari linguaggi e ambienti di programmazione. Se stai cercando un'applicazione autonoma per il rilevamento delle scene, puoi utilizzare HandySaw DS seguendo questo collegamento .

L'oggetto Scene Detector elabora il file video e restituisce un elenco delle scene trovate. Può anche salvare miniature per ogni scena e informare immediatamente l'applicazione chiamante su ogni nuova scena trovata tramite interfacce di callback durante l'elaborazione.

Caratteristiche principali

  • Rileva scene in quasi tutti i file video che possono essere riprodotti da Windows Media Player (grazie all'utilizzo dell'API DirectShow)
  • Algoritmo veloce e accurato
  • Integrazione semplice
  • Riporta la nuova scena subito dopo averla definita, durante l'elaborazione. Non è necessario attendere il completamento del rilevamento
  • Può generare miniature: immagini del primo e dell'ultimo fotogramma per ogni scena e salvarle in file BMP o JPG
  • È possibile specificare i filtri di origine, splitter e decodificatore video da utilizzare durante l'elaborazione
  • Può rilevare scene "bianche" e "nere".
  • Può funzionare negli spazi colore RGB e YUV
  • Può elaborare parte di un file multimediale: l'utente può specificare le posizioni di avvio e arresto dell'elaborazione

Versione demo e prezzo

Contattami .

Documentazione

enumerazione sdScenesMergeKind

Utilizzato per dare istruzioni su cosa fare con scene brevi.

sdMergeDelete = 0, Breve scena rimossa
sdMergeWithPrev = 1, Breve scena fusa con la precedente
sdMergeWithNext = 2, La scena breve si è fusa con quella successiva
sdMergeWithBoth = 3 Scene brevi (al centro), precedenti e successive fuse in un'unica scena

Struttura DetectorParameters

Questa struttura contiene i parametri del motore di rilevamento delle scene.

BSTR VideoFileName; Nome completo del file video per il rilevamento.
int Threshold; Valore di soglia di rilevamento.
I valori predefiniti consigliati sono 19 per lo spazio colore RGB e 5 per YUV.
Può essere compreso tra 0 e 255.
Questo parametro è il principale.
Quando la differenza di due fotogrammi è maggiore di questo valore, inizia una nuova scena.
Quindi: Soglia più bassa - più scene.
int UpLumaTresh; Utilizzato nel rilevamento delle "dissolvenze del bianco".
Valore predefinito consigliato -1.
Può essere compreso tra -1 e 255.
"-1" disabilita questa funzione.
Quando la luminosità complessiva del fotogramma è maggiore di questo valore, inizia una nuova scena.
Con questa funzione è possibile definire la sequenza di fotogrammi luminosi come una scena separata.
int BottomLumaTresh; Utilizzato nel rilevamento delle "dissolvenze nere".
Valore predefinito consigliato -1.
Può essere compreso tra -1 e 255.
"-1" disabilita questa funzione.
Quando la luminosità complessiva del fotogramma è inferiore a questo valore, inizia una nuova scena.
Con questa funzione è possibile definire la sequenza di tali fotogrammi scuri come una scena separata.
int MinSceneLength;

Imposta la durata minima di una scena rilevata (in fotogrammi).
Impostazione predefinita consigliata 5.
Può essere compreso tra 0 e qualsiasi valore positivo.
Se la lunghezza della scena definita è inferiore a questo valore, questa scena verrà unita alla scena precedente, successiva o ad entrambe, in base al valore del campo Unisci (vedi sotto).

int RegisterGraph; Controllare la registrazione del grafico di elaborazione interna nella Running Object Table (ROT).
Può essere 1(registra in ROT) o 0(non registra).
BSTR SourceFilterMoniker; Nome visualizzato del moniker del filtro di origine desiderato utilizzato nel grafico di elaborazione interna.
Se NULL: viene utilizzato il filtro predefinito.
BSTR SplitterFilterMoniker; Nome visualizzato del moniker del filtro splitter desiderato utilizzato nel grafico di elaborazione interna.
Se NULL: viene utilizzato il filtro predefinito.
BSTR DecoderFilterMoniker; Nome visualizzato del moniker del filtro del decodificatore desiderato utilizzato nel grafico di elaborazione interna.
Se NULL: viene utilizzato il filtro predefinito.
sdScenesMergeKind Merge; Quando la lunghezza della scena è inferiore a MinSceneLength, la scena viene modificata in base al valore di questo parametro.

Struttura DetectorParameters2

Questa struttura espande un insieme di parametri del motore di rilevamento scene definiti nella struttura DetectorParameters . Oltre ai membri di DetectorParameters contiene:

int UseYUV; Consente di selezionare lo spazio colore per il rilevamento della scena.
Può essere 1(YUY2) o 0(RGB24).
int Pad; Riservato
double StartPosition; Specifica la posizione iniziale del supporto per il rilevamento della scena in secondi.
Se questo è diverso da zero, non dimenticare che tutti i tempi della scena sono relativi a questa posizione.
double StopPosition; Specifica la posizione del supporto di arresto per il rilevamento della scena in secondi.
Impostato su zero per ignorare.

MiniatureStruttura dei parametri

Questa struttura contiene i parametri di generazione delle miniature.

int JpegFormat; Seleziona il formato del file. 0: genera file BMP, 1: genera file JPEG.
int JpegQuality; Qualità di compressione JPEG. Numero intero compreso tra 0 e 100.
int ImagesPerScene; Immagini per numero di scena. 1 - solo il fotogramma iniziale, 2 - i fotogrammi iniziali e finali di ogni scena.
double Scale; Fattore di scala della miniatura. 1 - immagine a grandezza naturale. Valore in virgola mobile.
BSTR FileName;

Modello di nomi di file di miniature. Stringa per la funzione "C" "printf" con un campo intero.
Ad esempio: "d:\dirfile\nomefile%05d.jpg"
È necessario specificare il percorso completo con l'estensione corretta. Verrà inserito il numero del fotogramma al posto dei simboli %d per ottenere il nome del file per la miniatura specifica.

Interfaccia ISceneDetector

Questa interfaccia fornisce metodi per il rilevamento della scena:

Metodo DetectScenesInFile

HRESULT _stdcall DetectScenesInFile ([in] DetectorParameters *Params, [in] ThumbnailsParameters *ThumbnailsParams, [out] SAFEARRAY (lungo) *Scenes );

Questo è il metodo di rilevamento della scena principale.
Passa i parametri di rilevamento in Params e puntatore a SAFEARRAY in Scenes.
Se Scene è NULL, la funzione non restituisce l'elenco delle scene rilevate.
Non è necessario che il chiamante crei SafeArray prima di chiamare questo metodo.
Se Scenes non è NULL e dopo la chiamata alla funzione anche *Scenes non è NULL, il chiamante deve distruggere *Scenes SafeArray.
*Le scene sono una matrice bidimensionale. Per ogni scena trovata ci sono due valori lunghi: i numeri dei fotogrammi di inizio e fine scena. Questi valori sono relativi alla posizione del supporto iniziale dell'elaborazione.
Passa un puntatore non NULL come ThumbnailsParams per attivare la generazione di miniature e specificarne i parametri. Passa NULL per disabilitare la generazione delle miniature.

Restituisce un valore HRESULT . I valori possibili includono quanto segue:

0 Successo
0x80040601 Errore non specificato
0x80040602 DirectShow non è installato o la versione è troppo vecchia
0x80040603 Impossibile ottenere la durata del video. Potrebbe trattarsi di un'immagine fissa
0x80040604 Cattiva argomentazione
0x80040605 Impossibile creare il contesto del dispositivo
0x80040606 L'oggetto è occupato con un'altra attività
0x80040607 Il framerate è uguale a zero. Potrebbe trattarsi di un'immagine fissa
0x80040608 Impossibile creare il grafico

Interfaccia ISceneDetector2

Questa interfaccia deriva dall'interfaccia ISceneDetector e fornisce metodi estesi per il rilevamento delle scene. Oltre ai metodi ereditati da ISceneDetector , l'interfaccia ISceneDetector2 espone i seguenti metodi:

Metodo DetectScenesInFile2

HRESULT _stdcall DetectScenesInFile2 ([in] DetectorParameters2 *Params, [in] ThumbnailsParameters *ThumbnailsParams, [out] SAFEARRAY (lungo) *Scenes );

A differenza di DetectScenesInFile, questo metodo utilizza il set di parametri DetectorParameters2 , quindi consente di specificare lo spazio colore e le posizioni di avvio e arresto dell'elaborazione.
Prestare attenzione al fatto che i valori di inizio e fine delle scene restituiti da questo metodo sono relativi al valore Params.StartPosition .
Vedi la descrizione di DetectScenesInFile per altre informazioni.

Metodo GetFrameRate

HRESULT _stdcall GetFrameRate ([out, retval] double *pFrameRate );

Restituisce la frequenza fotogrammi video dell'ultimo file elaborato. Utile per la traduzione del numero di time to frame.
Restituisce S_OK o E_INVALIDARG se pFrameRate è NULL.

Interfaccia degli eventi ISceneDetectorEvents

Questa interfaccia degli eventi fornisce metodi per recuperare informazioni sul rilevamento della scena in tempo reale.

Metodo NewScene

HRESULT NewScene ([in] long SceneIndex, [in] long Start, [in] long Stop );

Evento attivato dal rilevatore quando viene definita una nuova scena.
SceneIndex inizia da 0.
Anche Start e Stop iniziano da 0 e sono numeri di frame.
Quando l'elaborazione è avviata tramite il metodo DetectScenesInFile2 , i valori Start e Stop sono relativi al valore Params.StartPosition .

Metodo dello stato

Stato HRESULT ([in] long ScenesFound, [in] long CurrentFrame, [in] long TotalFrames, [out] long *AbortProcess );

L'evento viene attivato ogni 50 ms e informa il client sullo stato del processo.
AbortProcess è un puntatore alla variabile. Pertanto il client può impostare * AbortProcess sul valore 1 per annullare il rilevamento della scena corrente.