Scene Detector – Ανίχνευση σκηνής βίντεο Αντικείμενο COM

Περιγραφή

Ο ανιχνευτής σκηνής είναι ένα ισχυρό στοιχείο COM για αναγνώριση σκηνής και επεξεργασία σκηνής. Ενσωματώνει βραβευμένες τεχνολογίες HandySaw DS για εξαιρετικά ακριβή και γρήγορη οπτική αναγνώριση σκηνής. Απευθύνεται σε εταιρείες λογισμικού και προγραμματιστές που θέλουν να επεκτείνουν τα προϊόντα τους. Ένα στοιχείο COM είναι μια επαναχρησιμοποιήσιμη λειτουργική μονάδα λογισμικού που ακολουθεί την αρχιτεκτονική Component Object Model (COM), επιτρέποντάς της να χρησιμοποιείται σε διάφορες γλώσσες προγραμματισμού και περιβάλλοντα. Αν ψάχνετε για μια αυτόνομη εφαρμογή για ανίχνευση σκηνής, μπορείτε να χρησιμοποιήσετε το HandySaw DS ακολουθώντας αυτόν τον σύνδεσμο .

Το αντικείμενο Scene Detector επεξεργάζεται το αρχείο βίντεο και επιστρέφει μια λίστα με τις σκηνές που βρέθηκαν. Μπορεί επίσης να αποθηκεύσει μικρογραφίες για κάθε σκηνή και να ενημερώσει την εφαρμογή καλούντος αμέσως για κάθε νέα σκηνή που βρέθηκε μέσω διεπαφών επανάκλησης κατά την επεξεργασία.

Κύρια χαρακτηριστικά

  • Εντοπίζει σκηνές σχεδόν σε οποιοδήποτε αρχείο βίντεο που μπορεί να αναπαραχθεί από το Windows Media Player (λόγω χρήσης DirectShow API)
  • Γρήγορος και ακριβής αλγόριθμος
  • Εύκολη ενσωμάτωση
  • Αναφέρει τη νέα σκηνή αμέσως μετά τον καθορισμό της, κατά την επεξεργασία. Δεν χρειάζεται να περιμένετε να ολοκληρωθεί η ανίχνευση
  • Μπορεί να δημιουργήσει μικρογραφίες - εικόνες πρώτου και τελευταίου καρέ για κάθε σκηνή και να τις αποθηκεύσει σε αρχεία BMP ή JPG
  • Δυνατότητα καθορισμού φίλτρων πηγής, διαχωριστή και αποκωδικοποιητή βίντεο που θα χρησιμοποιηθούν κατά την επεξεργασία
  • Μπορεί να ανιχνεύσει «άσπρες» και «μαύρες» σκηνές
  • Μπορεί να λειτουργήσει σε χρωματικούς χώρους RGB και YUV
  • Μπορεί να επεξεργαστεί μέρος ενός αρχείου πολυμέσων - ο χρήστης μπορεί να καθορίσει θέσεις έναρξης και διακοπής επεξεργασίας

Έκδοση επίδειξης και τιμή

Επικοινωνήστε μαζί μου.

Τεκμηρίωση

sdScenesMergeKind enum

Χρησιμοποιείται για να δώσει οδηγίες τι να κάνει με σύντομες σκηνές.

sdMergeDelete = 0, Η σύντομη σκηνή αφαιρέθηκε
sdMergeWithPrev = 1, Σύντομη σκηνή συγχωνεύτηκε με την προηγούμενη
sdMergeWithNext = 2, Σύντομη σκηνή συγχωνεύτηκε με την επόμενη
sdMergeWithBoth = 3 Σύντομη (μεσαία), προηγούμενη και επόμενη σκηνή συγχωνεύτηκαν σε μια ενιαία σκηνή

Δομή DetectorParameters

Αυτή η δομή περιέχει παραμέτρους του κινητήρα ανίχνευσης σκηνής.

BSTR VideoFileName; Πλήρες όνομα αρχείου βίντεο για ανίχνευση.
int Threshold; Τιμή κατωφλίου ανίχνευσης.
Οι συνιστώμενες προεπιλογές είναι 19 για χρωματικό χώρο RGB και 5 για YUV.
Μπορεί να είναι από 0 έως 255.
Αυτή η παράμετρος είναι η κύρια.
Όταν η διαφορά δύο καρέ είναι μεγαλύτερη από αυτή την τιμή, ξεκινάει νέα σκηνή.
Έτσι: χαμηλότερο κατώφλι - περισσότερες σκηνές.
int UpLumaTresh; Χρησιμοποιείται στην ανίχνευση "λευκών εξασθενίσεων".
Προτεινόμενη προεπιλογή -1.
Μπορεί να είναι από -1 έως 255.
Το "-1" απενεργοποιεί αυτήν τη δυνατότητα.
Όταν η συνολική φωτεινότητα του καρέ είναι μεγαλύτερη από αυτή την τιμή, ξεκινάει νέα σκηνή.
Με αυτό το χαρακτηριστικό είναι δυνατό να οριστεί η ακολουθία τέτοιων φωτεινών καρέ ως ξεχωριστή σκηνή.
int BottomLumaTresh; Χρησιμοποιείται στην ανίχνευση "μαύρων ξεθωριασμών".
Προτεινόμενη προεπιλογή -1.
Μπορεί να είναι από -1 έως 255.
Το "-1" απενεργοποιεί αυτήν τη δυνατότητα.
Όταν η συνολική φωτεινότητα του καρέ είναι μικρότερη από αυτή την τιμή, ξεκινάει νέα σκηνή.
Με αυτό το χαρακτηριστικό είναι δυνατό να οριστεί η ακολουθία τέτοιων σκοτεινών καρέ ως ξεχωριστή σκηνή.
int MinSceneLength;

Ορίζει μια ελάχιστη διάρκεια μιας σκηνής που έχει εντοπιστεί (σε καρέ).
Προτεινόμενη προεπιλογή 5.
Μπορεί να είναι από 0 έως οποιαδήποτε θετική τιμή.
Εάν το μήκος της καθορισμένης σκηνής είναι μικρότερο από αυτήν την τιμή, αυτή η σκηνή συγχωνεύτηκε με την προηγούμενη, την επόμενη ή και τις δύο σκηνές, σύμφωνα με την τιμή του πεδίου συγχώνευσης (δείτε παρακάτω).

int RegisterGraph; Καταχώριση ελέγχου του γραφήματος εσωτερικής επεξεργασίας στον Πίνακα Εκτελούμενων Αντικειμένων (ROT).
Μπορεί να είναι 1 (εγγραφή σε ROT) ή 0 (δεν εγγράφεται).
BSTR SourceFilterMoniker; Εμφανιζόμενο όνομα του επιθυμητού ψευδώνυμου φίλτρου πηγής που χρησιμοποιείται στο γράφημα εσωτερικής επεξεργασίας.
Εάν NULL - χρησιμοποιείται το προεπιλεγμένο φίλτρο.
BSTR SplitterFilterMoniker; Εμφανιζόμενο όνομα του επιθυμητού ψευδώνυμου φίλτρου διαχωριστή που χρησιμοποιείται στο γράφημα εσωτερικής επεξεργασίας.
Εάν NULL - χρησιμοποιείται το προεπιλεγμένο φίλτρο.
BSTR DecoderFilterMoniker; Εμφανιζόμενο όνομα του επιθυμητού ψευδώνυμου φίλτρου αποκωδικοποιητή που χρησιμοποιείται στο γράφημα εσωτερικής επεξεργασίας.
Εάν NULL - χρησιμοποιείται το προεπιλεγμένο φίλτρο.
sdScenesMergeKind Merge; Όταν το μήκος σκηνής είναι μικρότερο από το MinSceneLength, η σκηνή τροποποιείται σύμφωνα με την τιμή αυτής της παραμέτρου.

Δομή DetectorParameters2

Αυτή η δομή επεκτείνει ένα σύνολο παραμέτρων του κινητήρα ανίχνευσης σκηνής που ορίζονται στη δομή DetectorParameters . Εκτός από τα μέλη του DetectorParameters περιέχει:

int UseYUV; Επιτρέπει την επιλογή χρωματικού χώρου για ανίχνευση σκηνής.
Μπορεί να είναι 1 (YUY2) ή 0 (RGB24).
int Pad; Κατοχυρωμένα
double StartPosition; Καθορίζει τη θέση έναρξης του μέσου για την ανίχνευση σκηνής σε δευτερόλεπτα.
Εάν αυτό είναι μη μηδενικό, τότε μην ξεχνάτε ότι όλοι οι χρόνοι σκηνής είναι σχετικοί με αυτή τη θέση.
double StopPosition; Καθορίζει τη θέση διακοπής μέσων για ανίχνευση σκηνής σε δευτερόλεπτα.
Ορίστε στο μηδέν για να αγνοήσετε.

ThumbnailsΔομή παραμέτρων

Αυτή η δομή περιέχει παραμέτρους δημιουργίας μικρογραφιών.

int JpegFormat; Επιλέξτε μορφή αρχείου. 0 - δημιουργία αρχείων BMP, 1 - δημιουργία αρχείων JPEG.
int JpegQuality; Ποιότητα συμπίεσης JPEG. Ακέραιος από 0 έως 100.
int ImagesPerScene; Εικόνες ανά αριθμό σκηνής. 1 - μόνο καρέ έναρξης, 2 - καρέ έναρξης και τέλους κάθε σκηνής.
double Scale; Συντελεστής κλιμάκωσης μικρογραφιών. 1 - εικόνα πλήρους μεγέθους. Τιμή κινητής υποδιαστολής.
BSTR FileName;

Πρότυπο ονομάτων αρχείων μικρογραφιών. Συμβολοσειρά για τη συνάρτηση "C" "printf" με ένα ακέραιο πεδίο.
Για παράδειγμα: "d:\filedir\filename%05d.jpg"
Πρέπει να καθορίσετε το πλήρες όνομα διαδρομής με την κατάλληλη επέκταση. Ο αριθμός πλαισίου θα εισαχθεί αντί για %d σύμβολα για να ληφθεί το όνομα αρχείου για συγκεκριμένη μικρογραφία.

Διεπαφή ISceneDetector

Αυτή η διεπαφή παρέχει μεθόδους για την ανίχνευση σκηνής:

Μέθοδος DetectScenesInFile

HRESULT _stdcall DetectScenesInFile ([σε] DetectorParameters *Params, [in] ThumbnailsParameters *ThumbnailsParams, [έξω] SAFEARRAY (μακριές) *Σκηνές );

Αυτή είναι η μέθοδος ανίχνευσης κύριας σκηνής.
Περάστε τις παραμέτρους ανίχνευσης στις Params και δείκτη στο SAFEARRAY στις σκηνές.
Εάν η λειτουργία Scenes is NULL δεν επιστρέφει τη λίστα σκηνών που έχουν εντοπιστεί.
Ο καλών δεν χρειάζεται να δημιουργήσει SafeArray πριν καλέσει αυτήν τη μέθοδο.
Εάν το Scenes δεν είναι NULL και μετά την κλήση της συνάρτησης *Οι σκηνές δεν είναι NULL επίσης, ο καλών πρέπει να καταστρέψει το *Scenes SafeArray.
*Το Scenes είναι δισδιάστατος πίνακας. Για κάθε σκηνή που βρέθηκε υπάρχουν δύο μεγάλες τιμές: οι αριθμοί καρέ έναρξης και διακοπής σκηνής. Αυτές οι τιμές σχετίζονται με τη θέση του μέσου έναρξης επεξεργασίας.
Περάστε τον μη NULL δείκτη ως ThumbnailsParams για να ενεργοποιήσετε τη δημιουργία μικρογραφιών και να καθορίσετε τις παραμέτρους του. Περάστε το NULL για να απενεργοποιήσετε τη δημιουργία μικρογραφιών.

Επιστρέφει μια τιμή HRESULT . Οι πιθανές τιμές περιλαμβάνουν τα ακόλουθα:

0 Επιτυχία
0x80040601 Απροσδιόριστο σφάλμα
0x80040602 Το DirectShow δεν είναι εγκατεστημένο ή η έκδοση είναι πολύ παλιά
0x80040603 Δεν είναι δυνατή η λήψη της διάρκειας βίντεο. Μπορεί να είναι ακίνητη εικόνα
0x80040604 Κακό επιχείρημα
0x80040605 Δεν είναι δυνατή η δημιουργία περιβάλλοντος συσκευής
0x80040606 Το αντικείμενο είναι απασχολημένο με άλλη εργασία
0x80040607 Το Framerate ισούται με μηδέν. Μπορεί να είναι ακίνητη εικόνα
0x80040608 Δεν είναι δυνατή η δημιουργία γραφήματος

Διεπαφή ISceneDetector2

Αυτή η διεπαφή προέρχεται από τη διεπαφή ISceneDetector και παρέχει εκτεταμένες μεθόδους για την ανίχνευση σκηνής. Εκτός από τις μεθόδους που κληρονομήθηκαν από το ISceneDetector , η διεπαφή ISceneDetector2 εκθέτει τις ακόλουθες μεθόδους:

Μέθοδος DetectScenesInFile2

HRESULT _stdcall DetectScenesInFile2 ([in] DetectorParameters2 *Params, [in] ThumbnailsParameters *ThumbnailsParams, [έξω] SAFEARRAY (μακριές) *Σκηνές );

Σε αντίθεση με το DetectScenesInFile , αυτή η μέθοδος χρησιμοποιεί σύνολο παραμέτρων DetectorParameters2 , έτσι επιτρέπει τον καθορισμό του χρωματικού χώρου, την έναρξη και τη διακοπή της επεξεργασίας.
Δώστε προσοχή στο γεγονός ότι οι τιμές έναρξης και διακοπής σκηνών που επιστρέφονται με αυτήν τη μέθοδο είναι σχετικές με την τιμή Params.StartPosition .
Δείτε την περιγραφή DetectScenesInFile για άλλες πληροφορίες.

Μέθοδος GetFrameRate

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

Επιστρέφει το ρυθμό καρέ βίντεο του τελευταίου επεξεργασμένου αρχείου. Χρήσιμο για τη μετάφραση αριθμών time to frame.
Επιστρέφει S_OK ή E_INVALIDARG εάν το pFrameRate είναι NULL.

Διεπαφή συμβάντων ISceneDetectorEvents

Αυτή η διεπαφή συμβάντων παρέχει μεθόδους για την ανάκτηση πληροφοριών ανίχνευσης σκηνής σε πραγματικό χρόνο.

Μέθοδος NewScene

HRESULT NewScene ([σε] long SceneIndex, [σε] μακρά έναρξη, [σε] μεγάλη Διακοπή );

Το συμβάν ενεργοποιείται από τον ανιχνευτή όταν ορίζεται νέα σκηνή.
Το SceneIndex ξεκινά από 0.
Το Start and Stop ξεκινά επίσης από το 0 και είναι αριθμοί καρέ.
Όταν ξεκίνησε η επεξεργασία μέσω της μεθόδου DetectScenesInFile2 , οι τιμές Start και Stop σχετίζονται με την τιμή Params.StartPosition .

Μέθοδος κατάστασης

Κατάσταση HRESULT ([σε] μακριές σκηνέςΒρέθηκαν, [σε] μακρύ CurrentFrame, [σε] μεγάλα συνολικά καρέ, [εκτός] μεγάλη διάρκεια *AbortProcess );

Το συμβάν ενεργοποιείται κάθε 50 ms και ενημερώνει τον πελάτη για την κατάσταση της διαδικασίας.
Το AbortProcess είναι δείκτης προς μεταβλητή. Έτσι ο πελάτης μπορεί να ορίσει το * AbortProcess σε 1 τιμή για να ακυρώσει την τρέχουσα ανίχνευση σκηνής.