2013-05-29 5 views
7

J'utilise opencv 2 avec une webcam. Je peux obtenir le flux vidéo et le traiter, mais je n'arrive pas à trouver un moyen de redimensionner la fenêtre d'affichage. J'ai des images vidéo empilées horizontalement, mais la dimension de l'image est très petite et il est difficile de voir les choses.Comment redimensionner la fenêtre dans opencv2 python

Mon code est assez simple, et le long des lignes de ce:

cv2.namedWindow("main") 

.... 

result = np.hstack((res2, foreground)) 
result = np.hstack((ff, result)) 

cv2.imshow("main", result) 
cv2.waitKey(20) 

Les opencv documentation états:

namedWindow 
flags – Flags of the window. Currently the only supported flag is CV_WINDOW_AUTOSIZE . If this is set, the window size is automatically adjusted to fit the displayed image (see imshow()), and you cannot change the window size manually. 

Mais qt backends ont apparemment des drapeaux supplémentaires. Je n'ai pas de backend qt. Y a-t-il un moyen pour moi d'augmenter la taille des images pour que je puisse les voir?

Répondre

10

Oui, malheureusement, vous ne pouvez pas redimensionner manuellement une fenêtre nameWindow sans backend Qt. Vos options:

  • utilisation cv2.resize fonction pour redimensionner l'image à la taille désirée avant d'afficher l'image
  • installer OpenCV avec le soutien de back-end Qt et utiliser cv2.namedWindow("main", CV_WINDOW_NORMAL)
+0

Vous avez raison. J'ai utilisé le redimensionnement sur le cadre et cela a fonctionné. – Bak

+0

Comment avez-vous utilisé le redimensionnement? – user391339

+0

cv2.resize (image, (0, 0), fx = 0.5, fy = 0.5) redimensionnera les deux axes de moitié tandis que cv2.resize (image, (100, 50)) redimensionnera pour avoir la largeur 100 et la hauteur 50 pixels . – uutsav

-2

Selon les docs, vous devez créer votre fenêtre avec autosize true. Votre appel à imshow redimensionne automatiquement la fenêtre pour l'adapter à votre image.

+0

L'option WINDOW_AUTOSIZE est par défaut et définit la taille de la fenêtre à la taille fixe réelle de l'image. –

2

Vous pouvez utiliser le drapeau WINDOW_NORMAL lorsque vous appelez la fonction namedWindow comme indiqué ci-dessous. Cela vous permettra de redimensionner votre fenêtre.

namedWindow("Image", WINDOW_NORMAL); 

Vérifiez la fonction namedWindow documentée here

8

écrire simplement

cv2.namedWindow("main", cv2.WINDOW_NORMAL) 

puis redimensionner manuellement à la taille voulue

Questions connexes