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

为何向cv.resize传入np.shape获取的元组时需交换元素?

为什么cv.resize需要交换np.shape的元素?
  • NumPy的shape规则:np.shape返回的元组是(行数, 列数),对应图像的高度(垂直像素数)、宽度(水平像素数)。比如代码里(rows, cols) = np.shape(gray),rows是图像上下方向的像素总数,cols是左右方向的。

  • OpenCV resize的参数规则:cv.resize的第二个参数dsize要求传入(宽度, 高度),也就是先水平方向的像素数,再垂直方向的。这是因为OpenCV沿用了视觉领域的坐标习惯——x轴对应水平宽度,y轴对应垂直高度,参数顺序和坐标轴顺序一致。

  • 两者的适配逻辑:所以从np.shape拿到的(rows, cols)(高度、宽度),必须转成(cols, rows)(宽度、高度)传给resize,才能保证缩放比例正确。你代码里(cols * 2, rows * 2)就是把宽高都放大2倍,完全符合resize的参数要求。

举个实际例子:如果原图是480行(高480)、640列(宽640),np.shape返回(480,640),传给resize的参数就得是(640*2, 480*2),这样缩放后的图像就是1280宽、960高,和原图像比例完全一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 22:29:55