OpenCV imshow() ne fonctionne pas
J'ai écrit une openCV code et mon code a énoncé suivant:
cv::imshow("Matches", matchesImg);
cv::waitKey(0);
Lorsque j'exécute le code, soit en Debug ou Release, je ne suis pas capable de voir la fenêtre qui m'indique la sortie.
Et ce qui se passe pour chaque projet, je créer.
Pas en mesure de comprendre la raison, quelqu'un Peut-il svp me guider sur ce?
Je suis codage sur Windows 7 et Visual studio 2010, avec opencv version 2.4.6
Pouvez-vous démontrer comment vous êtes confiant matchesImg est-elle valable? Quelle est l'erreur que vous obtenez?
A eu un problème similaire, voir si cela fonctionne:
Alex cela fonctionne. Merci beaucoup.
Yep vous dit d'abord. vous devriez poster comme réponse! Je pense que le fait que vous avez à créer explicitement une fenêtre, d'abord avec
Mustafa, pourriez-vous poster plus de code autour des deux lignes que vous avez fournis afin que nous puissions comprendre pourquoi
A eu un problème similaire, voir si cela fonctionne:
cv::namedWindow("Matches"); cv::imshow("Matches", matchesImg); cv::waitKey();
Alex cela fonctionne. Merci beaucoup.
Yep vous dit d'abord. vous devriez poster comme réponse! Je pense que le fait que vous avez à créer explicitement une fenêtre, d'abord avec
namedWindow
est un bug dans OpenCV.Mustafa, pourriez-vous poster plus de code autour des deux lignes que vous avez fournis afin que nous puissions comprendre pourquoi
cv::namedWindow("Matches");
apparemment résout le problème? Aussi, êtes-vous à l'aide d'un préconstruit version d'OpenCV, ou avez-vous vous-même reconstruit. Autre chose à noter, comme l'OpenGL ou QT?OriginalL'auteur Armin Mustafa | 2013-10-24
Vous devez vous connecter pour publier un commentaire.
Comme je l'ai mentionné dans les commentaires, vous devez créer une fenêtre, d'abord, à l'aide de
namedWindow
avec le même nom de la fenêtre comme dansimshow
Voir ce tutoriel pour plus de détails.
MODIFIER
Cette suggèrent fortement que vous avez pour créer la fenêtre à l'avance.
Certains diront que cela n'a pas fonctionné de cette façon pour les versions précédentes de OpenCV. Alors, disons que cette solution s'applique au moins à OpenCV 2.4.6, qui est la version de préoccupation ici (et il a résolu le problème).
Je viens de vérifier le 2.4.4 source.
imshow()
appelle justecvShowImage()
et, sur Windows, au moins, si le nom n'existe pas déjàcvNamedWindow()
est appelé à créer. Par conséquent, votre réponse ne s'applique pas à OpenCV 2.4.4 sur Windows 7, et possible pas d'autres plates-formes.Sur le lien que vous avez fourni, je ne vois rien qui suggère (même faiblement) que la fenêtre doit être créé au préalable. En regardant le source C++ pour la fonction
imshow()
je vois qu'il appelle simplement la fonction CcvShowImage()
. Vous pouvez voir que dans le github.com/Itseez/opencv/blob/2.4.6/modules/highgui/src/.... Vous pouvez aussi voir ce quecvShowImage()
n'est github.com/Itseez/opencv/blob/2.4.6/modules/highgui/src/... . Essayez-le pour vous? Il y a probablement quelque chose d'autre est en cours sur l'OP du code. Les liens sont pour OpenCV 2.4.6.Vous devez appeler
namedWindow()
si vous voulez par défaut de la fenêtre propertties.KeillRandor est correct. Ne vous embêtez pas avec les tutoriels, regardez la source!
imshow()
appelscvShowImage()
et, pour windows, au moins, si la fenêtre n'existe pas ce code est exécuté:cvNamedWindow(name, CV_WINDOW_AUTOSIZE);
. Vous avez SEULEMENT besoin d'appelernamedWindow()
d'abord si, pour une raisonCV_WINDOW_AUTOSIZE
ne vous convient pas. OTH, peut-être il y a un bug dansicvFindWindowByName()
. Mais cela ne m'affecte pas - jamais utilisénamedWindow()
OriginalL'auteur CTZStef