如何在OpenCV中将640*640图像的质心坐标转换为622*1186尺寸?
图像坐标转换公式及OpenCV实现
核心转换逻辑
图像坐标以左上角为原点(x轴向右,y轴向下),不同尺寸间的坐标转换基于宽高缩放比例计算:
假设:
- 原图像尺寸:
W1=640(宽),H1=640(高) - 目标图像尺寸:
W2=622(宽),H2=1186(高) - 原坐标为
(x1, y1),转换后目标坐标为(x2, y2)
转换公式:
x2 = x1 * (W2 / W1) y2 = y1 * (H2 / H1)
示例计算
以原坐标 (622, 622) 为例:
- x轴缩放比例:
622/640 ≈ 0.9719,所以x2 ≈ 622 * 0.9719 ≈ 604.7 - y轴缩放比例:
1186/640 ≈ 1.8531,所以y2 ≈ 622 * 1.8531 ≈ 1156.2
若需要整数坐标,可对结果取整(如四舍五入或直接截断)。
OpenCV代码实现
import cv2 # 定义尺寸参数 original_w, original_h = 640, 640 target_w, target_h = 622, 1186 def convert_point(x, y): # 计算缩放比例 w_scale = target_w / original_w h_scale = target_h / original_h # 转换并取整 new_x = round(x * w_scale) new_y = round(y * h_scale) return (new_x, new_y) # 测试示例点 original_point = (622, 622) converted_point = convert_point(*original_point) print(f"转换后坐标:{converted_point}")
注意事项
- 上述公式适用于直接拉伸图像至目标尺寸的场景;若需保持原图像比例并添加黑边,需额外计算偏移量,逻辑会更复杂。
- OpenCV中若涉及图像缩放,可结合
cv2.resize的插值方式,但坐标转换无需依赖图像数据,直接按比例计算即可。
内容的提问来源于stack exchange,提问作者Muhammad Rizwan Munawar
相关产品推荐
相关产品推荐

