2013-10-24 16 views
8

Ho scritto un codice di OpenCV e il mio codice ha seguente dichiarazione:OpenCV imshow() non funziona

cv::imshow("Matches", matchesImg); 
cv::waitKey(0); 

Quando eseguo il codice sia in Debug o Release io non sono in grado di vedere la finestra che mi mostra Il risultato.

E questo sta accadendo per ogni progetto che creo.

Non riesco a capire il motivo, Qualcuno può guidarmi per favore su questo?

sto codifica sul Windows 7 e Visual Studio 2010, con la versione OpenCV di 2.4.6

+0

Puoi dimostrare come sei sicuro che matchImg è valido? Che errore ottieni? – KobeJohn

+0

Assicurati che MatchImg non sia vuoto. – ChronoTrigger

+0

No l'immagine non è vuota. Il problema è che non ho alcun errore. Il mio codice funziona bene. Quando salgo l'immagine usando imwrite ottengo l'output corretto. Solo lo spettacolo non funziona in alcun codice. Ho provato anche a reinstallare la roba. –

risposta

3

Come ho già detto nei commenti, è necessario creare una finestra prima, utilizzando namedWindow con lo stesso nome della finestra come in imshow Vedere questo tutorial per dettagli.

EDIT

This suggeriscono fortemente che si deve creare la finestra in anticipo. Alcuni potrebbero obiettare che non ha funzionato in questo modo per le versioni precedenti di OpenCV. Quindi, diciamo che questa soluzione si applica almeno a OpenCV 2.4.6, che è la versione di preoccupazione qui (e ha risolto il problema).

+1

Anche se questo può essere vero per 2.4.6, non è (almeno per me) su 2.4.4. – Bull

+0

Penso che sia vero dopo OpenCV 1.0. Perché non per te? – CTZStef

+1

Ho appena controllato la sorgente 2.4.4. 'imshow()' chiama semplicemente 'cvShowImage()' e, almeno su Windows, se la finestra con nome non esiste già 'cvNamedWindow()' viene chiamata per crearla. Pertanto la tua risposta non si applica a OpenCV 2.4.4 su Windows 7, e possibile non altre piattaforme. – Bull