在OpenCV中,cv2.imshow显示的图片太大了,缩放方法

方法1:缩放图片后再显示

直接调整图片尺寸(推荐,兼容性更好):

import cv2

# 读取原始图片
img = cv2.imread("large_image.jpg")

# 定义缩放比例(例如缩放到原图的50%)
scale_percent = 50  # 百分比
width = int(img.shape[1] * scale_percent / 100)
height = int(img.shape[0] * scale_percent / 100)
dim = (width, height)
resized = cv2.resize(img, dim, interpolation=cv2.INTER_AREA)

# 或直接指定目标尺寸(例如800x600)
# resized = cv2.resize(img, (800, 600), interpolation=cv2.INTER_AREA)

cv2.imshow("Resized Image", resized)
cv2.waitKey(0)
cv2.destroyAllWindows()
保持宽高比的缩放
def resize_with_aspect_ratio(img, width=None, height=None):
    """
    按比例缩放图片(指定宽度或高度)
    """
    h, w = img.shape[:2]
    
    if width is None and height is None:
        return img
    if width is not None:
        ratio = width / w
        dim = (width, int(h * ratio))
    else:
        ratio = height / h
        dim = (int(w * ratio), height)
    
    return cv2.resize(img, dim, interpolation=cv2.INTER_AREA)

# 示例:固定宽度为800px
resized_img = resize_with_aspect_ratio(img, width=800)
cv2.imshow("Fixed Width", resized_img)

方法2:允许窗口自由缩放

设置窗口属性为可调整模式:

# 创建可调整大小的窗口
cv2.namedWindow("Resizable Window", cv2.WINDOW_NORMAL)
cv2.imshow("Resizable Window", img)
cv2.waitKey(0)

关键参数说明

参数/方法说明
cv2.resize()核心缩放函数,需指定目标尺寸和插值方法
interpolation插值方法:cv2.INTER_AREA(缩小推荐)或cv2.INTER_CUBIC(放大推荐)
cv2.WINDOW_NORMAL窗口属性:允许手动拖动调整窗口大小(但图片本身分辨率不变,可能导致显示模糊)

效果对比

方法优点缺点
固定尺寸缩放精确控制显示大小,性能好需手动计算比例,可能破坏原始宽高比
按比例缩放保持宽高比,显示自然需选择宽度或高度作为基准
窗口自由缩放无需修改图片数据,快速实现图片实际分辨率未变,放大后可能模糊

完整示例代码

import cv2

img = cv2.imread("large_image.jpg")

# 方法1:缩放到指定宽度(保持比例)
resized = resize_with_aspect_ratio(img, width=800)

# 方法2:创建可调整窗口
cv2.namedWindow("Adjustable Window", cv2.WINDOW_NORMAL)
cv2.imshow("Adjustable Window", img)

cv2.waitKey(0)
cv2.destroyAllWindows()

选择方案时:

  • 若需精确控制显示尺寸,使用方法1

  • 若需快速查看原图细节,使用方法2(拖动窗口+鼠标滚轮缩放)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值