2013-10-10 19 views
17

Ich arbeite gerade daran, ein Bild zu lesen und es in einem Fenster anzuzeigen. Ich habe das erfolgreich gemacht, aber beim Anzeigen des Bildes erlaubt mir das Fenster nur, einen Teil des Vollbildes zu sehen. Ich habe versucht, das Bild nach dem Laden zu speichern, und es das gesamte Bild gespeichert. Ich bin ziemlich sicher, dass es das ganze Bild liest.Python - OpenCV - imread - Bild anzeigen

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

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

Image: image

Screenshot: screenshot

+1

Sie verwenden die alte Version (Python-Modul für das neue namens 'cv2'). Versuche es zu aktualisieren. – Igonato

+0

Sorry, ich habe vergessen zu erwähnen, dass ich cv2 als cv benutze. –

+0

Dieser Code sieht gut aus. Können Sie uns einen Screenshot zeigen? – Igonato

Antwort

21

Sieht aus wie das Bild zu groß ist und das Fenster nicht einfach passen Sie den Bildschirm an. Erstellen Sie ein Fenster mit dem cv2.WINDOW_NORMAL Flag, es wird es skalierbar machen. Dann können Sie es die Größe Ihren Bildschirm so passen:

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() 

According to the OpenCV documentationCV_WINDOW_KEEPRATIO Flagge soll das gleiche tun, aber es funktioniert nicht und es ist Wert nicht einmal in dem Python-Modul vorgestellt.

+0

Das hat hervorragend funktioniert! Das Bild wurde klein erstellt, aber ich konnte klicken und ziehen, um das Fenster zu vergrößern. Vielen Dank! –

+0

Verwenden Sie Fließkomma screen_res, um ein korrekt skaliertes Startbild zu erhalten: 'screen_res = 1280., 720.' – Marc

+0

@Marc' von __future__ import division 'look up – Igonato

3

Dies kann Ihnen helfen

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