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

如何使用OpenCV按特定模式放大图像避免拉伸变形

OpenCV保持宽高比调整图像尺寸方案

你当前使用的直接指定固定输出尺寸的resize方法会忽略原图的宽高比例,强制拉伸图像到目标尺寸,因此会出现变形问题。你需要实现的是保持原图宽高比等比例缩放后,填充空白区域到目标尺寸的逻辑,实现代码如下:

import cv2
import numpy as np

# 读取输入图像
x = cv2.imread("your_image_path.jpg")
h, w = x.shape[:2]
# 目标尺寸:宽1500,高1600
target_w, target_h = 1500, 1600

# 计算等比例缩放系数,保证缩放后图像不超出目标尺寸
scale = min(target_w / w, target_h / h)
new_w = int(w * scale)
new_h = int(h * scale)

# 等比例缩放图像
resized_img = cv2.resize(x, (new_w, new_h), interpolation=cv2.INTER_AREA)

# 计算上下左右需要填充的像素数,实现居中放置
top = (target_h - new_h) // 2
bottom = target_h - new_h - top
left = (target_w - new_w) // 2
right = target_w - new_w - left

# 填充空白区域,value参数为填充颜色,示例为黑色,可按需修改
result = cv2.copyMakeBorder(resized_img, top, bottom, left, right, cv2.BORDER_CONSTANT, value=[0, 0, 0])

可选优化说明

  • 若当前场景为放大图像,可将插值参数替换为cv2.INTER_CUBIC或cv2.INTER_LINEAR,获得更清晰的放大效果
  • 若不需要居中放置,只需修改top、left的计算逻辑即可调整对齐方式,比如左对齐可直接将left设为0

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 22:57:03