OpenGL vs OpenCV per principianti [chiuso]

2

Sono uno studente di college matricola che attualmente sta imparando la programmazione in C ++. Sono bravo in matematica e fisica, quindi sto cercando di specializzarmi in grafica 2D / 3D con OpenGL. La mia domanda riguarda le differenze tra OpenGL e OpenCV e la quantità di sovrapposizione di queste aree. Da quello che ho letto, uno crea grafica mentre l'altro li elabora. Ho molti libri sulla grafica 3D e sulla matematica ad esso associata. Quello che mi chiedo è se gli stessi concetti che sto imparando in OpenGL possano essere applicati a OpenCV. È possibile diventare un ingegnere del software C ++ che potrebbe specializzarsi sia in OpenGL che in OpenCV, oppure si tratta di un obiettivo irrealistico?

Faccio queste domande perché capisco che la programmazione di grafica 2D / 3D richiede un'enorme quantità di conoscenze in matematica e fisica, ma non conosco troppo su OpenCV e le abilità prerequisite necessarie per "mettere piede nella porta" ".

    
posta Jacob Perkins 18.12.2014 - 02:33
fonte

2 risposte

4

OpenGL è un'API grafica 3D. Fornisce le API per descrivere una scena 3D e renderla a un framebuffer e infine visualizzarla su uno schermo. I primitivi che ha sono elenchi di vertici, liste di triangoli, normali elenchi di vettori, ecc. N.b. 2D è un caso speciale di 3D; IIRC OpenGL non ha un supporto 2D esplicito (ad esempio sprites e bit blit)

OpenCV è un'API di visione artificiale (CV) e ha implementazioni di vari algoritmi CV, rilevamento blob, corrispondenza di modelli, ecc.

OpenCV opera generalmente su dati di immagine reali e non funziona su grafica generata da OpenGL. (a meno che non si stia tentando di creare un bot AI che veda solo l'output framebuffer di un gioco, ma quello in un'altra tangente del tutto.)

"Is it possible to become a C++ software engineer that could specialize in both OpenGL AND OpenCV, or is this an unrealistic goal?"

Certo, sono diversi tipi di sistemi e potresti specializzarti in più di una cosa. Per quanto riguarda OpenGL e grafica 3D, se ne impari uno probabilmente puoi usarne uno.

Per la visione artificiale del computer, un sistema aiuta certianamente con un altro, ma probabilmente non nella stessa misura della grafica per computer.

n.b Questa domanda probabilmente appartiene ad un'altra scheda.

    
risposta data 18.12.2014 - 03:21
fonte
2

Non ho mai usato OpenCV, ma AFAIK, è molto diverso da OpenGL. OpenGL è un'API C costruita intorno a MOLTO stato globale (quindi perché viene spesso chiamata una macchina a stati), mentre OpenCV espone un'interfaccia C ++ più orientata agli oggetti, con un uso massiccio di modelli.

OpenGL è pensato per essere un sottile strato di astrazione dell'hardware grafico, quindi può anche essere pensato come un driver di dispositivo, in un certo senso. L'obiettivo principale di questa API è il rendering in tempo reale, non il calcolo general purpose. Pertanto, gli strumenti forniti da OpenGL sono principalmente incentrati sul disegno di poligoni sullo schermo nel modo più rapido ed efficiente possibile.

Non riesco a fare un buon parallelo tra OpenGL e OpenCV, ma la mia comprensione è che il CV è molto più focalizzato sull'elaborazione di immagini offline, quindi è un concetto completamente diverso se confrontato con GL. Immagino però che OpenGL sia spesso usato in congiunzione con OpenCV per implementare la visualizzazione dell'elaborazione dell'immagine fatta da CV, quindi se ti concentri sul CV, potresti trarre vantaggio dalla conoscenza di un'API grafica come GL. Se il tuo interesse principale è nella grafica in tempo reale, come giochi e film CG, allora OpenGL dovrebbe essere sufficiente. Non è molto probabile che tu abbia bisogno di conoscere gli strumenti di visione artificiale in quelle aree.

Infine, hai ragione nel dire che la programmazione grafica 2D / 3D richiede la conoscenza della matematica e della fisica. Se ti senti a tuo agio con la matematica, la vita diventa molto più facile. Se ti piace questo campo, impara prima i calcoli matematici, poi impara una API grafica, come OpenGL, per implementare la teoria.

    
risposta data 18.12.2014 - 03:01
fonte

Leggi altre domande sui tag