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

如何获取matplotlib plot_surface的3D深度最值及对应坐标?

获取深度数据最值及对应坐标的解决方案

你可以直接用NumPy自带的函数来实现需求,不需要额外引入其他库——毕竟你的image2和blurred本身就是NumPy数组,NumPy提供了高效的最值计算和索引定位工具。

实现步骤及代码示例

直接在你的现有代码末尾添加以下逻辑即可:

1. 处理原始图像image2

# 计算深度最值
max_val_img = np.max(image2)
min_val_img = np.min(image2)

# 获取最值在数组中的原始索引(行,列)
max_idx_img = np.unravel_index(np.argmax(image2), image2.shape)
min_idx_img = np.unravel_index(np.argmin(image2), image2.shape)

# 转换为3D投影中的x、y坐标(匹配你代码里的网格定义)
max_x_img = max_idx_img[1]  # x对应列索引
max_y_img = rows - 1 - max_idx_img[0]  # y是原始行索引的逆序

min_x_img = min_idx_img[1]
min_y_img = rows - 1 - min_idx_img[0]

# 输出结果
print(f"原始图像深度最大值: {max_val_img}, 对应坐标(x,y): ({max_x_img}, {max_y_img})")
print(f"原始图像深度最小值: {min_val_img}, 对应坐标(x,y): ({min_x_img}, {min_y_img})")

2. 处理模糊后图像blurred

# 计算深度最值
max_val_blur = np.max(blurred)
min_val_blur = np.min(blurred)

# 获取最值在数组中的原始索引(行,列)
max_idx_blur = np.unravel_index(np.argmax(blurred), blurred.shape)
min_idx_blur = np.unravel_index(np.argmin(blurred), blurred.shape)

# 转换为3D投影中的x、y坐标
max_x_blur = max_idx_blur[1]
max_y_blur = rows - 1 - max_idx_blur[0]

min_x_blur = min_idx_blur[1]
min_y_blur = rows - 1 - min_idx_blur[0]

# 输出结果
print(f"模糊图像深度最大值: {max_val_blur}, 对应坐标(x,y): ({max_x_blur}, {max_y_blur})")
print(f"模糊图像深度最小值: {min_val_blur}, 对应坐标(x,y): ({min_x_blur}, {min_y_blur})")

关键函数说明

  • np.max()/np.min():直接计算数组的最大值、最小值
  • np.argmax()/np.argmin():返回最值在展平数组中的索引
  • np.unravel_index():将展平索引转换为原始二维数组的(行,列)索引
  • 坐标转换:因为你代码里的y网格是range(rows)[::-1](即行索引逆序),所以需要用rows - 1 - 原始行索引来匹配3D图中的y坐标

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 13:25:12