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