You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用OpenCV实现图像150%缩放且保持原529×550像素尺寸

修正后的OpenCV实现代码

import cv2 as cv

def zoom_at(img, x, y, zoom):
    # img为cv读取的BGR格式图像,x、y是放大中心点坐标,zoom为放大倍数
    height, width = img.shape[:2]
    # 按指定倍数放大图像,用INTER_LANCZOS4插值和PIL的LANCZOS效果对齐,减少画质损失
    zoomed = cv.resize(img, None, fx=zoom, fy=zoom, interpolation=cv.INTER_LANCZOS4)
    zoomed_h, zoomed_w = zoomed.shape[:2]
    # 计算裁剪区域的边界坐标
    crop_x1 = int(round(x * zoom - width / 2))
    crop_y1 = int(round(y * zoom - height / 2))
    crop_x2 = crop_x1 + width
    crop_y2 = crop_y1 + height
    # 执行中心裁剪,注意cv图像索引是先高后宽(y在前x在后)
    cropped = zoomed[crop_y1:crop_y2, crop_x1:crop_x2]
    return cropped

# 调用示例
if __name__ == '__main__':
    img = cv.imread('original.png')
    height, width = img.shape[:2]
    # 取图像中心点作为放大中心,和原PIL代码逻辑一致
    result = zoom_at(img, width/2, height/2, 1.5)
    cv.imwrite('image_zoomed.png', result)

关键修改说明

你之前的代码问题是裁剪默认从左上角(0,0)开始,只保留了放大后图像的左上角区域。上述代码和你的PIL版本逻辑完全对齐:先整体放大图像,再以指定中心点为核心,裁剪出和原图像尺寸一致的区域,最终实现中心放大、输出尺寸不变的效果。如果需要调整放大的中心位置,只需修改zoom_at调用时传入的x、y参数即可。

内容的提问来源于stack exchange,提问作者user16755372

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 10:12:03