python - 图像的梯度方向不一致(X vs Y)

标签 python numpy image-processing computer-vision gradient

我知道梯度方向从低值到高值。下面是一个例子:

import numpy as np
import matplotlib.pyplot as plt
import math

I = np.zeros((3,4), dtype=np.float64)
I[:,0:3] = 1
Y,X = np.mgrid[0:3, 0:4]
Iy,Ix = np.gradient(I)

#plotting quiver plot 1
plt.quiver(X,Y, Ix,Iy,  color='r')
plt.imshow(I)

enter image description here
正如您在上面的图 1 中看到的,方向是从 0 值(低)到 1 值(高)。
当我翻转矩阵并遵循相同的程序时,方向反转(从高到低),如下所示:
I2 = np.zeros((3,4), dtype=np.float64)
I2[0:2,:] = 1
print(I2)
Iy2,Ix2 = np.gradient(I2)
plt.imshow(I2)
plt.quiver(X,Y, Ix2,Iy2,  color='r')
enter image description here
箭头不应该朝上而不是朝下吗?我错过了什么?

最佳答案

为了纠正 y 轴被反转,颤动图需要在 Iy 前面加一个负数。学期。plt.quiver(X,Y, Ix2,-Iy2, color='r')

关于python - 图像的梯度方向不一致(X vs Y),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65359235/

相关文章:

javascript - 如何将纯黑白图像转换为多边形集合?

python-3.x - 使用OpenCv的阈值?

python - 如何组织代码/何时使用类?

python - 使用 Python 获取鼠标增量! (在 Linux 中)

python - 使用pivot_table时同时对aggfunc应用两个numpy函数

python - 直接索引一个numpy数组的时间复杂度是多少

python-3.x - 水平计数加工织物中的白色簇

Python:从 optparse 切换到 argparse

python - 将 python 回调函数传递给 Fortran 子例程的开销是多少?

python - 是否可以将数字放在 matplotlib 直方图之上?