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

OpenCV裁剪返回0:0尺寸,调整图像大小后裁剪得到0×0图像如何解决

问题原因分析与修复方案

根本原因

  • Numpy切片语法使用错误:OpenCV读取的图像以Numpy数组格式存储,数组切片遵循[行起始索引:行结束索引, 列起始索引:列结束索引]的规则,且区间为左闭右开。你写的resized[0:0, h_crop:w_crop]中行的起止索引均为0,直接得到行维度为0的结果;如果h_crop与w_crop取值相等,列维度也会为0,最终输出0×0的空图像。
  • 裁剪范围逻辑错误:如果你的需求是从缩放后的图像中裁剪出边长为min_dimension的正方形,那么裁剪范围的起止值设置不符合预期,不应该将h_crop作为列维度的起始索引。

修复方法

左上角裁剪(从图像左上角取正方形)

直接修改裁剪行的代码即可,将原代码:

cropped = resized[0:0, h_crop:w_crop]

替换为:

cropped = resized[0:h_crop, 0:w_crop]

中心裁剪(从图像中心取正方形,适配更多使用场景)

如果需要裁剪图像的中心区域,可先计算裁剪偏移量再执行裁剪:

# 计算中心裁剪的起始坐标
start_y = (h - h_crop) // 2
start_x = (w - w_crop) // 2
# 执行裁剪
cropped = resized[start_y:start_y + h_crop, start_x:start_x + w_crop]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 20:06:07