Quali sono i prerequisiti per iniziare con OpenCV in C ++?

0

Sono un programmatore C ++ intermedio. Ho bisogno di qualche conoscenza matematica per costruire applicazioni per computer usando openCV?

    
posta dlpsankhla 13.06.2016 - 10:56
fonte

2 risposte

1

Ho fatto qualche tracciamento con openCV, questo non richiede un'abilità matematica elevata. Tuttavia dovrai acquisire alcune nozioni di base su prestazioni e tecniche come:

Threading / Concorrenza

Di solito si memorizzano i dati dall'hardware in un buffer che viene aggiornato in modo asincrono dal resto dell'applicazione. Questo perché l'hardware di solito inviava i dati a una velocità fissa.

Ad esempio un Kinect invierà 30 volte i propri dati al massimo per secondi. Ciò significa che puoi già perdere quasi 30ms in attesa di dati dal tuo hardware se lo fai in modo sincrono, perché il driver è stato implementato come una lettura sincrona. Copia un buffer di dati con openCV è inferiore a 1 ms.

Inoltre, se vuoi creare un'interfaccia utente sulla tua applicazione, vorrai avere quell'interfaccia utente in esecuzione in un thread diverso rispetto all'elaborazione dell'immagine. Questo significa che dovrai usare qualcosa per condividere i dati tra questi due thread. Una semplice mutua esclusione dovrebbe essere ancora sufficiente.

Elaborazione di immagini

  • Buffering: calcola il processo su un buffer (detto anche doppio / triplo buffering).

  • Rappresentazione dell'immagine: alcuni algoritmi funzioneranno meglio su RGB / TLS / Scala di grigi / Immagine binaria, una lettura veloce può aiutarti a capire perché.

  • Sottostringa di fondo: se lo sfondo è stabile, dovresti usare questo. Fondamentalmente si sottraggono pixel per pixel la media degli ultimi valori dei pixel. È possibile che openCV o alcuni siti di terze parti lo diano già adesso.

  • Distinzione tra cattura e rilevamento: l'acquisizione è molto più pesante del tracciamento, è per questo che la stai usando quando stai cercando qualcosa e una volta che lo hai usato, usi l'algoritmo di tracciamento che esegue più velocemente. rilevamento del volto, OpenCV ha già implementato.

Apprendimento automatico

Il riconoscimento dei modelli inizia sempre con una fase di apprendimento. Se hai bisogno di avere il tuo computer per imparare qualcosa devi già:

  • Crea un database decente di immagini su cui l'algoritmo utilizzato può essere appreso
  • Trova l'implementazione degli algoritmi dei somes e li confronta con loro.
  • Se hai bisogno / vuoi implementare il tuo algoritmo come la rete di convoluzione. Avrai bisogno di una lezione specifica o di una domanda specifica qui.

Come ho detto nella sezione Elaborazione delle immagini, openCV ha già un algoritmo di rilevamento dei volti pronto per essere utilizzato. Ciò significa che openCV ha già incorporato un database di facce su cui imparare.

    
risposta data 13.06.2016 - 11:44
fonte
0

no, non è necessario alcun calcolo matematico per utilizzare la libreria OpenCV. Finché hai familiarità con C ++ puoi creare programmi che lo utilizzano, viene fornito con varie applicazioni di esempio che puoi facilmente creare dimostrando gran parte delle sue funzionalità.

L'unica area di cui dovrei essere prudente è la documentazione, è un riferimento piuttosto che un tutorial e molti risultati delle ricerche web non tengono la mano nello sviluppo del codice openCV. Quindi hai bisogno di un po 'di pazienza e un'intensa determinazione per capire un po' di cose quando ti allontani un po 'dal sentiero battuto.

    
risposta data 13.06.2016 - 12:50
fonte

Leggi altre domande sui tag