web-dev-qa-db-fra.com

OpenCV & Python - Image trop grosse pour être affichée

J'ai une image au format 6400 × 3200 alors que mon écran correspond à 1280 x 800. Par conséquent, l'image doit être redimensionnée pour l'affichage uniquement. J'utilise Python et OpenCV 2.4.9 . Selon OpenCV Documentation

Si vous avez besoin d'afficher une image plus grande que la résolution de l'écran, vous devez appeler namedWindow ("", WINDOW_NORMAL) avant imshow.

C’est ce que je suis en train de faire, mais l’image n’est pas ajustée à l’écran, seule une partie est affichée car elle est trop grande. J'ai aussi essayé avec cv2.resizeWindow, mais cela ne fait aucune différence.

import cv2
cv2.namedWindow("output", cv2.WINDOW_NORMAL)        # Create window with freedom of dimensions
# cv2.resizeWindow("output", 400, 300)              # Resize window to specified dimensions
im = cv2.imread("earth.jpg")                        # Read image
cv2.imshow("output", im)                            # Show image
cv2.waitKey(0)                                      # Display the image infinitely until any keypress
18
Zynk

Même si je m'attendais à une solution automatique (adaptation automatique à l'écran), le redimensionnement résout également le problème. 

import cv2
cv2.namedWindow("output", cv2.WINDOW_NORMAL)        # Create window with freedom of dimensions
im = cv2.imread("earth.jpg")                        # Read image
imS = cv2.resize(im, (960, 540))                    # Resize image
cv2.imshow("output", imS)                            # Show image
cv2.waitKey(0)                                      # Display the image infinitely until any keypress
26
Zynk

Essaye ça:

image = cv2.imread("img/Demo.jpg")
image = cv2.resize(image,(240,240))

La image est maintenant redimensionnée. L'afficher sera rendu en 240x240.

Dans opencv, cv.namedWindow () crée simplement un objet window tel que vous le déterminez, mais sans redimensionner l'image d'origine. Vous pouvez utiliser cv2.resize (img, résolution) pour résoudre le problème.

Voici ce qu’elle affiche, une image de résolution 740 * 411 .  The original image

image = cv2.imread("740*411.jpg")
cv2.imshow("image", image)
cv2.waitKey(0)
cv2.destroyAllWindows()

Ici, il affiche une image de résolution 100 * 200 après redimensionnement. Rappelez-vous que le paramètre de résolution utilise la colonne en premier, puis la ligne.

 Image after resizing

image = cv2.imread("740*411.jpg")
image = cv2.resize(image, (200, 100))
cv2.imshow("image", image)
cv2.waitKey(0)
cv2.destroyAllWindows()
0
FrancisYL