在图像上叠加 matplotlib 箭袋

was*_*tor 5 python gradient numpy matplotlib

我试图在图像上叠加箭袋渐变箭头,但由于原点位置不同,它们看起来不正确。我将如何解决这个问题?

这是一个例子。左边的图像是我期望的渐变,但是一旦我将它们绘制在图像的顶部,由于原点位置的变化,它们指向错误的方向。

import matplotlib.pyplot as plt
import numpy as np

test_array = np.array([[0, 0, 0, 0, 0],
                       [0, 64, 128, 64, 0],
                       [0, 127, 255, 127, 0],
                       [0, 64, 127, 64, 0],
                       [0, 0, 0, 0, 0]]).astype("float")

dy, dx = np.gradient(test_array)
plt.imshow(test_array)
plt.quiver(dx, dy)
plt.show()
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明 在此处输入图片说明

Cra*_*aig 5

如果您想获得与单独绘制箭头相同的绘图方向,您可以通过添加到调用来更改图像原点origin='lower'imshow

plt.imshow(test_array, origin='lower')

如果您想将图像原点保留在左上角,您可以在调用时更改箭头的方向plt.quiver

dy, dx = np.gradient(test_array)
plt.imshow(test_array)
plt.quiver(dx, -dy)
plt.show()
Run Code Online (Sandbox Code Playgroud)