it-swarm.com.de

Python - OpenCV - imread - Bild anzeigen

Ich arbeite gerade daran, ein Bild zu lesen und es in einem Fenster anzuzeigen. Ich habe dies erfolgreich durchgeführt, aber bei Anzeige des Bildes kann ich nur einen Teil des Vollbilds sehen. Ich habe versucht, das Bild nach dem Laden zu speichern, und es wurde das gesamte Bild gespeichert. Ich bin mir ziemlich sicher, dass es das gesamte Bild liest. 

imgFile = cv.imread('1.jpg')

cv.imshow('dst_rt', imgFile)
cv.waitKey(0)
cv.destroyAllWindows()

Bild:image

Bildschirmfoto:screenshot

20
Sinjin Forde

Sieht aus, als wäre das Bild zu groß und das Fenster passt einfach nicht zum Bildschirm. Das Fenster wird mit dem Flag cv2.WINDOW_NORMAL erstellt. Dadurch wird es skalierbar. Dann können Sie die Größe des Bildschirms wie folgt anpassen:

from __future__ import division
import cv2


img = cv2.imread('1.jpg')

screen_res = 1280, 720
scale_width = screen_res[0] / img.shape[1]
scale_height = screen_res[1] / img.shape[0]
scale = min(scale_width, scale_height)
window_width = int(img.shape[1] * scale)
window_height = int(img.shape[0] * scale)

cv2.namedWindow('dst_rt', cv2.WINDOW_NORMAL)
cv2.resizeWindow('dst_rt', window_width, window_height)

cv2.imshow('dst_rt', img)
cv2.waitKey(0)
cv2.destroyAllWindows()

Laut der OpenCV-Dokumentation sollteCV_WINDOW_KEEPRATIO-Flag dasselbe tun, jedoch nicht und dessen Wert wird nicht einmal im Python-Modul dargestellt.

28
Igonato

Das kann dir helfen

namedWindow( "Display window", CV_WINDOW_AUTOSIZE );// Create a window for display.
imshow( "Display window", image );                   // Show our image inside it.
3

Wenn Sie in openCV versuchen, ein übergroßes Bild oder ein Bild anzuzeigen, das größer als Ihre Anzeigeauflösung ist, wird die zugeschnittene Anzeige angezeigt.
Um das Bild in einem Fenster Ihrer Wahl anzuzeigen, empfiehlt openCV die Verwendung von named window namedWindow documentation .
cv.NamedWindow(name, flags=CV_WINDOW_AUTOSIZE) Wenn sich jedes Fenster durch den Namen arg auf den Image-Container bezieht, stellen Sie sicher, dass derselbe Name verwendet wird
z.B:

import cv2
frame = cv2.imread('1.jpg')
cv2.NamedWindow("Display 1", flags=CV_WINDOW_AUTOSIZE)
cv2.resizeWindow("Display 1", 300, 300)
cv2.imshow("Display 1", frame)
0
Mahesh Mac