使用python获取图像中的最高点(z)

使用python获取图像中的最高点(z),python,image,numpy,matplotlib,Python,Image,Numpy,Matplotlib,我用这个代码来获取图像中的最高地形点(z轴)(不模糊),这是正确的方法吗?如果有更好的方法呢 import numpy as np import matplotlib.pyplot as plt from matplotlib.pyplot import imread from mpl_toolkits.mplot3d import Axes3D import scipy.ndimage as ndimage imageFile = 'D:\Books\Pav Man\PICS\pic (31

我用这个代码来获取图像中的最高地形点(z轴)(不模糊),这是正确的方法吗?如果有更好的方法呢

import numpy as np
import matplotlib.pyplot as plt
from matplotlib.pyplot import imread
from mpl_toolkits.mplot3d import Axes3D
import scipy.ndimage as ndimage

imageFile = 'D:\Books\Pav Man\PICS\pic (31)-2.png'
mat = imread(imageFile)
mat = mat[:,:,0] # get the first channel
rows, cols = mat.shape
xv, yv = np.meshgrid(range(cols), range(rows)[::-1])

blurred = ndimage.gaussian_filter(mat, sigma=(5, 5), order=0)
fig = plt.figure(figsize=(6,6))
ax = fig.add_subplot(221)
ax.imshow(mat, cmap='gray')
ax = fig.add_subplot(222, projection='3d')
ax.elev= 75
ax.plot_surface(xv, yv, mat)
ax = fig.add_subplot(223)
ax.imshow(blurred, cmap='gray')
ax = fig.add_subplot(224, projection='3d')
ax.elev= 75
ax.plot_surface(xv, yv, blurred)
# Get highest value #
maxP = 0
for xx in range(0,len(mat)):

    for x in mat[xx]:
        if x>maxP:
            maxP=x
print(maxP)
# -----------------#

plt.show()

假设
mat
为ndarray,您可以尝试感谢它的工作,我注意到没有负值,我可以将平均值(Average)设为零(reference)以将其与其他值进行比较吗?我不确定我是否明白您的问题。如果你想创建平均值和你可以使用的值之间的差异矩阵,你可以使用
diff=mat-numpy.full_like(mat,mat.mean())
假设
mat
为ndarray,你可以尝试感谢它的工作,我注意到没有负值,我可以让平均值(average)为我的零(参考值)把它与其他价值观进行比较?我不确定我是否明白你的问题。如果要创建平均值和值之间的差异矩阵,可以使用
diff=mat-numpy.full_like(mat,mat.mean())