Python - OpenCV - imread - Displaying Image Python - OpenCV - imread - Displaying Image python python

Python - OpenCV - imread - Displaying Image


Looks like the image is too big and the window simply doesn't fit the screen.Create window with the cv2.WINDOW_NORMAL flag, it will make it scalable. Then you can resize it to fit your screen like this:

from __future__ import divisionimport cv2img = cv2.imread('1.jpg')screen_res = 1280, 720scale_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 documentation CV_WINDOW_KEEPRATIO flag should do the same, yet it doesn't and it's value not even presented in the python module.


This can help you

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


In openCV whenever you try to display an oversized image or image bigger than your display resolution you get the cropped display. It's a default behaviour.
In order to view the image in the window of your choice openCV encourages to use named window. Please refer to namedWindow documentation

The function namedWindow creates a window that can be used as a placeholder for images and trackbars. Created windows are referred to by their names.

cv.namedWindow(name, flags=CV_WINDOW_AUTOSIZE)where each window is related to image container by the name arg, make sure to use same name

eg:

import cv2frame = cv2.imread('1.jpg')cv2.namedWindow("Display 1")cv2.resizeWindow("Display 1", 300, 300)cv2.imshow("Display 1", frame)