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

Matplotlib绘图图像翻转问题:为何生成的图像出现翻转?

图像翻转原因分析

核心问题出在Matplotlib不同函数的坐标系统不匹配:

  • plt.imshow()默认以图像左上角为坐标原点,y轴数值从上到下递增(符合图像显示的常规逻辑)
  • 你通过数组索引获取的x[i](行索引)、y[i](列索引),在plt.scatter()中被当作笛卡尔坐标处理——笛卡尔坐标原点在左下角,y轴数值从下到上递增。

你的代码里,用随机生成的行索引x作为scatter的x坐标,列索引y作为scatter的y坐标,这就导致绘制的点和imshow()显示的图像在纵向方向完全颠倒,看起来像是图像翻转了。

解决方法

可以任选一种方式修正坐标对齐问题:

  1. 让imshow()使用笛卡尔坐标系统,设置origin='lower':
plt.imshow(img, cmap='gray', origin='lower')
  1. 调整scatter的坐标参数,适配imshow()的默认坐标:
    把scatter的调用改成:
plt.scatter(points_in[1], img.shape[0] - points_in[0], c='b', s=0.1)
plt.scatter(points_out[1], img.shape[0] - points_out[0], c='r', s=0.1)

另外你代码里两次执行img = -img + 1只是反转图像灰度,和翻转问题无关。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 15:27:25