我使用下面的代码来获取所显示的2张图像的3D深度投影。我需要最大和最小深度值,以及这些最大和最小深度值的x和y坐标。是否有函数/方法可以从中获取这些信息?即使它将使用matplotlib以外的库。
import cv2
import numpy as np
import math
import scipy.ndimage as ndimage
from matplotlib import pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
image2=cv2.imread('D:/Post_Grad/STDF/iPython_notebooks/2228.jpg')
image2 = image2[:,:,1] # get the first channel
rows, cols = image2.shape
x, y= np.meshgrid(range(cols), range(rows)[::-1])
blurred = ndimage.gaussian_filter(image2,(5, 5))
fig = plt.figure(figsize=(6,6))
ax = fig.add_subplot(221)
ax.imshow(image2, cmap='gray')
ax = fig.add_subplot(222, projection='3d')
ax.elev= 5
f1=ax.plot_surface(x,y,image2, cmap=cm.jet)
ax = fig.add_subplot(223)
ax.imshow(blurred, cmap='gray')
ax = fig.add_subplot(224, projection='3d')
ax.elev= 5
f2=ax.plot_surface(x,y,blurred, cmap=cm.jet)
plt.show()
1条答案
按热度按时间zazmityj1#
最大深度和最小深度就是图像的最大和最小像素值。你可以通过np.max(image2),np.min(image2)等很容易地找到这些值。坐标也可以通过一个简单的函数找到
因此getCoord(image2,np.max(image2))将返回image2中的所有最高像素坐标(它可以大于1),getCoord(blurred,np.min(blurred))将返回blurred中的所有最低像素坐标,等等。