为了直观地理解图像运算中涉及到的向量、标量场,包括计算、梯度、散度、拉普拉斯等,我试图将它们也绘制在所涉及的图像上。我从下面的梯度开始,但是
MWE:
test_img = cv2.imread('images/ring.png', cv2.IMREAD_GRAYSCALE)
r, c = test_img.shape
gd = 15
test_slice = test_img[::gd,::gd] # every 15th point
X, Y = np.mgrid[0:r:gd, 0:c:gd]
dY, dX = np.gradient(test_slice)
plt.figure(figsize=(10,10))
plt.quiver(X, Y, dX, dY, color='y')
plt.imshow(test_img, cmap='gray')
plt.show()
输出:
所需样式:(下面是图像的矢量场):
使用的示例图像:link
注意:我最初使用了png,然后alpha区域给出了一个nan,所以现在我上传了jpg。在
简单的回答是:
np.mgrid()
是给你一个转置(即旋转)矩阵,例如this article。在在下面,我将使用
matplotlib.image
加载图像(我首先将其转换回.png)。 我将图像展平(即移除alpha通道)并使用imshow
和合适的颜色贴图(“Greys\u r”)。然而,重要的部分是在Y, X = np.mgrid[0:r:gd, 0:c:gd]
,如果你的图像一开始不是方形的,你可能会发现自己。在生成的图像(但是带有colormap
viridis
)似乎可以满足您的需要。相关问题 更多 >
编程相关推荐