it-swarm.com.de

OpenCV & Python - Bild zu groß zum Anzeigen

Ich habe ein Bild, das 6400 × 3200 ist, während mein Bildschirm 1280 x 800 ist. Daher muss die Bildgröße nur für die Anzeige geändert werden. Ich verwende Python und OpenCV 2.4.9 . Gemäß OpenCV-Dokumentation

Wenn Sie ein Bild anzeigen möchten, das größer als die Bildschirmauflösung ist, müssen Sie vor dem imshow den Namen "Windows" ("", WINDOW_NORMAL) aufrufen.

Das mache ich, aber das Bild passt nicht zum Bildschirm, es wird nur ein Teil gezeigt, weil es zu groß ist. Ich habe es auch mit cv2.resizeWindow versucht, aber es macht keinen Unterschied.

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

Obwohl ich eine automatische Lösung erwartete (Anpassung an den Bildschirm automatisch), löst die Größenänderung das Problem ebenfalls. 

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

Versuche dies:

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

Die Variable image wird jetzt angepasst. Die Anzeige wird in 240x240 dargestellt.

In opencv erstellt cv.namedWindow () nur ein Fensterobjekt, das Sie bestimmen, aber das Originalbild nicht ändern. Sie können cv2.resize (img, resolution) verwenden, um das Problem zu lösen.

Hier sehen Sie, was angezeigt wird, ein Bild mit einer Auflösung von 740 * 411 .  The original image

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

Hier wird nach der Größenänderung ein Bild mit einer Auflösung von 100 * 200 angezeigt. Denken Sie daran, dass die Auflösungsparameter-Spalte zuerst verwendet wird und dann die Zeile.

 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