Python中cv2使用小窗口显示高分辨率图片
使用resizeWindos缩小N倍显示图片
# coding=utf-8
import cv2
filename = "1.bmp"
image = cv2.imread(filename)
n = 3
h, w, c = image.shape
resize_width = int(w / n)
resize_height = int(h / n)
windowname = "Image" # 使用中文会乱码
cv2.namedWindow(windowname, cv2.WINDOW_NORMAL)
cv2.resizeWindow(windowname, resize_width, resize_height)
cv2.imshow(windowname, image)
cv2.waitKey(0)
使用namedWindow函数中的参数
# coding=utf-8
import cv2
filename = "1.bmp"
image = cv2.imread(filename)
windowname = "Image" # 使用中文会乱码
cv2.namedWindow(windowname, cv2.WINDOW_NORMAL) # 允许窗口拖拽、放大缩小,并会记录上次的大小和位置
cv2.imshow(windowname, image)
cv2.waitKey(0)
namedWindow中的参数:
- WINDOW_NORMAL:允许窗口拖拽、放大缩小,并会记录上次的大小和位置
- WINDOW_AUTOSIZE:自动最大化显示图片
- WINDOW_KEEPRATIO:保持图片比例
- WINDOW_FREERATIO:不考虑图片比例,而窗口保持图像比率
- 默认情况下,使用的参数是WINDOW_AUTOSIZE |或WINDOW_KEEPRATIO ,不能缩放显示
- WINDOW_GUI_NORMAL和WINDOW_GUI_EXPANDED以前版本中绘制窗口旧方法,不建议使用
总得说来,暂时没发现第二种方法有什么用,建议在多张图片显示的时候使用cv2.resizeWindow
编写缩小显示的函数
如果有很多图片需要显示,则可以将第一种缩小显示的方法编写成函数:
def cv2_show_image(windowname, image, n):
"""
author: xt
:param windowname: 窗口名
:param image: 传入的图片
:param n: 图片缩小倍数
:return:
"""
h, w, c = image.shape
resize_width = int(w / n)
resize_height = int(h / n)
cv2.namedWindow(windowname, cv2.WINDOW_NORMAL)
cv2.resizeWindow(windowname, resize_width, resize_height)
cv2.imshow(windowname, image)
接着就只需要调用函数,就可以实现自动缩放显示了:
filename = "1.bmp"
image = cv2.imread(filename)
cv2_show_image('Image', image, 3)
cv2.waitKey(0)