You need to enable JavaScript to run this app. 为什么cv2.resize传入显式尺寸时输出维度与请求值相反?
优惠活动
大模型
产品
解决方案
定价
更多

为什么cv2.resize传入显式尺寸时输出维度与请求值相反?

维度不匹配的本质原因

核心问题来自于OpenCV接口和NumPy数组对图像维度的表示规则存在顺序差异:

  • NumPy ndarray形式的OpenCV图像,.shape属性的返回顺序固定为 (图像高度, 图像宽度, 图像通道数)。比如代码里摄像头读取的帧shape为(480, 640, 3),代表图像垂直方向高480像素、水平方向宽640像素。
  • cv2.resize 接口的目标尺寸参数dsize,要求传入的元组顺序固定为 (目标宽度, 目标高度),和NumPy shape的顺序完全颠倒。

你代码里的问题出在对shape返回值的顺序误解:直接按shape的顺序解包成w, h, d = s1时,因为shape第一个值是高度,此时你定义的变量w实际存储的是图像高度480,变量h实际存储的是图像宽度640。传入cv2.resize的元组(w*2, h*2)实际计算结果为(960, 1280),刚好符合cv2.resize对(宽度, 高度)的参数要求,最终输出图像的NumPy shape自然是(高度1280, 宽度960, 3),和实际观察到的输出完全一致。

固定尺寸缩放的正确写法参考:若需要将原始480高、640宽的图像放大到960高、1280宽,dsize参数需传入(1280, 960)——即先写目标水平宽度、再写目标垂直高度,不能直接照搬NumPy shape的顺序拼接参数。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.23 06:36:06