web-dev-qa-db-fra.com

Python - OpenCV - imread - Affichage de l'image

Je travaille actuellement à la lecture d'une image et à son affichage dans une fenêtre. J'ai réussi à le faire, mais lors de l'affichage de l'image, la fenêtre ne me permet de voir qu'une partie de l'image complète J'ai essayé d'enregistrer l'image après l'avoir chargée, et l'ensemble de l'image a été enregistrée. Je suis donc à peu près certain qu'il lit l'intégralité de l'image. 

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

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

Image:image

Capture d'écran:screenshot

20
Sinjin Forde

On dirait que l'image est trop grande et que la fenêtre ne correspond tout simplement pas à l'écran . Créez une fenêtre avec l'indicateur cv2.WINDOW_NORMAL, cela la rendra évolutive. Ensuite, vous pouvez le redimensionner pour qu’il corresponde à votre écran:

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

Selon la documentation OpenCVCV_WINDOW_KEEPRATIO devrait faire de même, mais ce n'est pas le cas et sa valeur n'est même pas présentée dans le module python.

28
Igonato

Cela peut vous aider

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

En openCV, lorsque vous essayez d'afficher une image surdimensionnée ou une image plus grande que votre résolution d'affichage, vous obtenez l'affichage recadré.
Afin de voir l'image dans la fenêtre de votre choix, openCV vous encourage à utiliser la fenêtre nommée namedWindow documentation
cv.NamedWindow(name, flags=CV_WINDOW_AUTOSIZE) où chaque fenêtre est liée au conteneur d'images par le nom arg, assurez-vous d'utiliser le même nom
par exemple:

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