1 回答

TA貢獻1757條經(jīng)驗 獲得超8個贊
這是一種方法。
制作一個與圖像具有相同高度和寬度的浮點數(shù)組,并且最終尺寸等于您要識別的唯一深度的數(shù)量
在每個像素位置,計算到三個所需深度中每個深度的距離并存儲在最終尺寸中
用于
np.argmin(..., axis=2)
選擇三個深度中最接近的深度
我不是在計算機上進行測試,您的圖像不是您的實際圖像,而是帶有窗口裝飾、標題欄和不同值的圖片,但如下所示:
import cv2
# Load the image as greyscale float - so we can store positive and negative distances
im = cv2.imread('depth.png', cv2.IMREAD_GRAYSCALE).astype(np.float)
# Make list of the desired depths
depths = [255, 181, 125]
# Make array with distance to each depth
d2each = np.zeros(((im.shape[0],im.shape[1],len(depths)), dtype=np.float)
for i in range(len(depths)):
? ? d2each[...,i] = np.abs(im - depths[i])
# Now let Numpy choose nearest of three distances
mask = np.argmin(d2each, axis=2)
另一種方法是范圍測試距離。加載圖像如上:
# Make mask of pixels matching first distance?
d0 = np.logical_and(im>100, im<150)
# Make mask of pixels matching second distance?
d1 = np.logical_and(im>180, im<210)
# Make mask of pixels matching third distance?
d2 = im >= 210
這些蒙版將是合乎邏輯的(即 True/False),但如果您想讓它們變成黑白,只需將它們乘以 255 并使用mask0 = d0.astype(np.uint8)
另一種方法可能是使用K 均值聚類。
添加回答
舉報