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

如何针对不同分辨率动态缩放OpenCV中的ROI区域?

动态缩放ROI适配不同分辨率的解决方案

核心问题在于你使用了固定像素值的ROI坐标,这仅适用于严格1920x1080的图像。当原图比例与目标比例不一致时,resize后的图像尺寸会偏离预期,导致固定坐标无法定位到正确的ROI区域。

解决思路是将固定像素坐标转换为相对比例值,再根据resize后的实际图像尺寸动态计算ROI坐标,具体实现如下:

步骤1:预计算ROI相对比例

基于你设定的标准分辨率(1920x1080),把固定的ROI参数转换成相对比例:

# 标准分辨率参数
STD_WIDTH = 1920
STD_HEIGHT = 1080
# 原固定ROI坐标
STD_X, STD_Y, STD_W, STD_H = 466, 203, 978, 760

# 计算相对比例
x_ratio = STD_X / STD_WIDTH
y_ratio = STD_Y / STD_HEIGHT
w_ratio = STD_W / STD_WIDTH
h_ratio = STD_H / STD_HEIGHT

步骤2:动态计算ROI坐标

对任意分辨率的原图,先完成resize操作,再用resize后的实际宽高乘以比例值,得到适配当前尺寸的ROI坐标:

import cv2

# 读取原图
img = cv2.imread("test.png")
orig_h, orig_w = img.shape[:2]
print(f'original size / w = {orig_w}, h = {orig_h}')

# 方案1:强制拉伸到1920x1080(不保持原图比例)
img_resized = cv2.resize(img, (STD_WIDTH, STD_HEIGHT), interpolation=cv2.INTER_AREA)

# 方案2:保持原图比例缩放(此时尺寸可能不是1920x1080)
# img_resized = image_resize(img, width=STD_WIDTH)

resized_h, resized_w = img_resized.shape[:2]
print(f'after resize / w = {resized_w}, h = {resized_h}')

# 动态生成当前尺寸下的ROI坐标
x = int(resized_w * x_ratio)
y = int(resized_h * y_ratio)
w = int(resized_w * w_ratio)
h = int(resized_h * h_ratio)

roi = img_resized[y:y+h, x:x+w]

补充:修复resize函数的强制拉伸逻辑

你的现有image_resize函数在同时传入width和height时,只会以width为基准计算比例,忽略height参数。如果需要支持强制拉伸到指定宽高,可以修改函数:

def image_resize(image, width=None, height=None, inter=cv2.INTER_AREA):
    (h, w) = image.shape[:2]
    
    # 同时指定宽高时,直接强制拉伸到目标尺寸
    if width is not None and height is not None:
        return cv2.resize(image, (width, height), interpolation=inter)
    
    # 原比例缩放逻辑
    if width is None and height is None:
        return image
    if width is None:
        r = height / float(h)
        dim = (int(w * r), height)
    else:
        r = width / float(w)
        dim = (width, int(h * r))
    
    return cv2.resize(image, dim, interpolation=inter)

修改后调用image_resize(img, width=1920, height=1080)即可得到严格1920x1080的图像,配合比例计算的ROI坐标就能准确定位目标区域。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 20:15:51