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

如何将(512,512)二维数组图像以(183.,185.)为坐标原点显示?

解决方法

你之前修改数组值的思路不对——调整数组只会改变像素的数值,不会影响坐标轴的刻度体系。要把指定像素点设为坐标原点,需要调整绘图时的坐标轴刻度与位置,而非修改图像数组本身。下面以Python的Matplotlib库为例,给出两种实用方案:

方案1:仅修改坐标轴标签

这种方法保持坐标轴位置不变,只把刻度标签替换为相对于目标原点的数值:

import matplotlib.pyplot as plt
import numpy as np

# 替换为你的实际图像数组
img = np.random.rand(512, 512)  

fig, ax = plt.subplots()
ax.imshow(img)

# 目标原点对应的像素坐标
target_origin_x = 183
target_origin_y = 185

# 更新x轴刻度标签:原刻度值减去目标原点x坐标
xticks = ax.get_xticks()
ax.set_xticklabels([f"{tick - target_origin_x}" for tick in xticks])

# 更新y轴刻度标签:原刻度值减去目标原点y坐标
yticks = ax.get_yticks()
ax.set_yticklabels([f"{tick - target_origin_y}" for tick in yticks])

# 可选:标记目标原点位置
ax.scatter(target_origin_x, target_origin_y, color='red', marker='+', s=100)

plt.show()

方案2:移动坐标轴交点到目标原点

这种方法会把坐标轴的交点(即视觉上的原点)直接移到指定像素位置,更符合“原点在中心点”的直观需求:

import matplotlib.pyplot as plt
import numpy as np

# 替换为你的实际图像数组
img = np.random.rand(512, 512)  

fig, ax = plt.subplots()
ax.imshow(img)

# 目标原点对应的像素坐标
target_origin_x = 183
target_origin_y = 185

# 将左、下坐标轴移到目标原点位置
ax.spines['left'].set_position(('data', target_origin_x))
ax.spines['bottom'].set_position(('data', target_origin_y))

# 隐藏右上侧的冗余坐标轴
ax.spines['top'].set_visible(False)
ax.spines['right'].set_visible(False)

# 更新刻度标签为相对值
xticks = ax.get_xticks()
ax.set_xticklabels([f"{tick - target_origin_x}" for tick in xticks])

yticks = ax.get_yticks()
ax.set_yticklabels([f"{tick - target_origin_y}" for tick in yticks])

# 可选:标记目标原点位置
ax.scatter(target_origin_x, target_origin_y, color='red', marker='+', s=100)

plt.show()

关键说明

  • 图像的y轴默认是从上到下递增的,所以y方向的相对值计算直接用原刻度减目标y坐标即可,无需反转。
  • 如果使用其他绘图库(如OpenCV的可视化工具),核心思路一致:调整坐标轴的刻度映射关系,而非修改图像数据本身。

内容的提问来源于stack exchange,提问作者Maxwell's Daemon

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 16:45:54