Cercando di uscita display di cattura per l'analisi in tempo reale con OpenCV; Ho bisogno di aiuto con l'interfacciamento con il sistema operativo per l'ingresso

StackOverflow https://stackoverflow.com/questions/4060265

Domanda

Voglio applicare operazioni dalla libreria OpenCV visione artificiale, in tempo reale, al video catturato dal mio schermo del computer. L'idea in questo caso particolare è quello di individuare caratteristiche interessanti durante il gioco in un gioco popolare e fornire all'utente una migliore esperienza; ma mi veniva in mente molti altri scenari in cui uno vorrebbe avere un accesso diretto a questi dati pure. In ogni caso, per la fase di sviluppo potrebbe essere accettabile utilizzare il video in scatola, ma per la prestazione dell'applicazione finale e la reattività sono ovviamente critico.

sto cercando di fare questo su Ubuntu 10.10 a partire da ora, e preferirebbe utilizzare un sistema di UNIX-like, ma tutte le opzioni sono di interesse. Le mie competenze C sono molto limitate, così ogni volta che parla di OpenCV attraverso Python è possibile, cerco di utilizzarlo. Si prega di notare che io sto cercando di catturare non da un dispositivo di macchina fotografica, ma da un flusso in diretta di uscita del display; e io sono in perdita su come prendere l'input. Per quanto posso dire, CaptureFromCAM funziona solo per i dispositivi della macchina fotografica, e mi sembra che il requisito per le prestazioni in tempo reale il risultato finale rende l'archiviazione in un file e ritorno lettura attraverso CaptureFromFile una cattiva opzione.

La via più promettente che ho trovato finora sembra essere utilizzando ffmpeg con l'opzione x11grab alla cattura da un display X11; (Ad esempio il comando ffmpeg -f x11grab -sameq -r -s 25 WXGA -i: 0.0 out.mpg cattura 1366x768 di visualizzazione da 0 a 'out.mpg'). Immagino che dovrebbe essere possibile trattare il flusso di output da ffmpeg come file per essere letto da OpenCV (presumibilmente utilizzando la funzione CaptureFromFile) magari utilizzando tubi; ma questo è tutto su un livello molto più alto di quanto io abbia mai affrontato prima e ho potuto davvero usare alcune direzioni. Pensi che questo approccio è fattibile? E ancora più importante si può pensare a uno migliore? Come lo fareste?

È stato utile?

Soluzione

vorrei scartare x11grab o altri programmi di cmd-LINE per mettere le immagini, se siete alla ricerca di prestazioni in tempo reale.

Scrivi la tua schermo grabber in modo da poter inviare direttamente a OpenCV. Si potrebbe dare un'occhiata a xwd codice sorgente se volete sapere come fare sotto X11.

Altri suggerimenti

Penso che la sfida principale è il requisito in tempo reale. Credo che bisogna creare qualche pezzo di software per OpenCV, ispirato dal codice per il video grabbing in ffmpeg. ma che di sicuro avrebbe coinvolge livello C codifica.

Il mio suggerimento è quello di cercare di ottenere il vostro algoritmo visione prima a destra, utilizzando il video ffmpeg-catturato.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top