Python - OpenCV - imread - Отображение изображения - программирование
Подтвердить что ты не робот

Python - OpenCV - imread - Отображение изображения

В настоящее время я работаю над чтением изображения и отображением его в окне. Я успешно это сделал, но при отображении изображения окно позволяет мне видеть только часть полное изображение. Я попытался сохранить изображение после его загрузки, и он сохранил все изображение. Поэтому я абсолютно уверен, что он читает весь образ.

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

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

Изображение: image

Снимок экрана: screenshot

4b9b3361

Ответ 1

Похоже, что изображение слишком велико, и окно просто не подходит для экрана. Создайте окно с флагом cv2.WINDOW_NORMAL, оно сделает его масштабируемым. Затем вы можете изменить его размер, чтобы он соответствовал вашему экрану:

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

В соответствии с документацией OpenCV CV_WINDOW_KEEPRATIO флаг должен делать то же самое, но это не так, и это значение даже не представлено в модуле python.

Ответ 2

Это может помочь вам

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

Ответ 3

В openCV всякий раз, когда вы пытаетесь отобразить увеличенное изображение или изображение, превышающее ваше разрешение экрана, вы получаете обрезанный дисплей. Это поведение по умолчанию.
Для просмотра изображения в выбранном вами окне openCV рекомендует использовать именованное окно. Пожалуйста, обратитесь к документации namedWindow

Функция namedWindow создает окно, которое можно использовать в качестве заполнителя для изображений и трекбаров. Созданные окна называются их именами.

cv.namedWindow(name, flags=CV_WINDOW_AUTOSIZE) где каждое окно связано с контейнером изображений по имени arg, убедитесь, что используется то же имя

например:

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)