2013-12-13 4 views
12

Sono nuovo di OpenCV, hanno recentemente ottenuto una versione pre-compilata di OpenCV 2.4.7 ed è stato con successo in grado di integrare con Visual Studio 2010.OpenCV non imshow il rendering immagine sullo schermo

Apparentemente libreria sembra funzionare bene, ma quando sto cercando di visualizzare l'immagine usando imshow mostra la finestra ma non mostra l'immagine al suo interno.

{ 
    cv::Mat image = cv::imread("F:/office_Renzym/test3.jpg",CV_LOAD_IMAGE_UNCHANGED); 

    if(image.empty()) 
    { 
     cout<<"image not loaded"; 
    } 
    else 
    { 
     cv::namedWindow("test", CV_WINDOW_AUTOSIZE); 
     cv::imshow("test",image); 
    } 
} 

Qualsiasi aiuto sarebbe molto apprezzato.

+0

avete una chiamata a [WAITKEY] (http://docs.opencv.org/modules/highgui/doc/user_interface.html#waitkey) dopo 'imshow'? –

+0

Avrei incluso l'immagine con la domanda, ma come mi sono recentemente registrato qui, quindi non posso ancora includere le immagini – Usama

+0

sì hanno provato waitKey ancora nessun successo – Usama

risposta

17

è necessario disporre di:

cv::waitKey(0); 

invece di:

system("pause"); 

Quest'ultimo semplicemente non funziona. OpenCV ha bisogno di pompare messaggi per ottenere la finestra visualizzata e aggiornata, e all'interno di quella funzione waitKey c'è tutto il meccanismo per farlo.

Come dice la documentazione, waitKey funziona solo se si dispone di una finestra HighGUI aperto, quindi nel codice, probabilmente bisogno di fare questo:

cv::Mat image = cv::imread("F:/office_Renzym/test3.jpg",CV_LOAD_IMAGE_UNCHANGED); 

if(image.empty()) 
{ 
    cout<<"image not loaded"; 
} 
else 
{ 
    cv::namedWindow("test", CV_WINDOW_AUTOSIZE); 
    cv::imshow("test",image); 
    cv::waitKey(0); 
} 

Nel caso in cui ci sia un problema con il formato di immagine, è potrebbe provare a caricare in questo modo:

cv::Mat image = cv::imread("F:/office_Renzym/test3.jpg",CV_LOAD_IMAGE_COLOR); 
+3

Non posso ringraziarti di più, grazie mille hai risolto il mio problema – Usama

1

vi suggerisco di rimuovere la dichiarazione cv::namedWindow, e l'aggiunta di

cv::waitKey(); 

dopo l'istruzione cv:imshow. Puoi anche verificare se le dimensioni della finestra sono corrette.

+0

hanno fatto come hai menzionato ancora nessun successo – Usama

+0

Dalla risposta di cui sopra, il il problema sembra essere stato nel formato dell'immagine. – Totoro

+0

no, non stavo usando waitKey (0) inizialmente – Usama