- Python代码
def faster_LBP(img): '''输入一张灰度图''' dst = np.zeros(img.shape,dtype=img.dtype) # h, w = img.shape origin_array = cv2.merge([img for _ in range(8)]) nei_array = np.zeros_like(origin_array) for i, (x_plus, y_plus) in enumerate(((-1, -1), (0, -1), (1, -1), (-1, 0), (1, 0), (-1, 1), (0, 1), (1, 1))): if y_plus - 1 == 0 and x_plus - 1 == 0: nei_array[1:-1, 1:-1, i] = img[y_plus + 1:, x_plus + 1:].copy() elif y_plus - 1 == 0: nei_array[1:-1, 1:-1, i] = img[y_plus + 1:, x_plus + 1:x_plus - 1].copy() elif x_plus - 1 == 0: nei_array[1:-1, 1:-1, i] = img[y_plus + 1:y_plus - 1, x_plus + 1:].copy() else: nei_array[1:-1, 1:-1, i] = img[y_plus + 1:y_plus - 1, x_plus + 1:x_plus - 1].copy() sub_array = nei_array.astype(np.int) - origin_array.astype(np.int) # sub_array = np.where(sub_array >= 0, 1, 0).astype(np.uint8) sub_array[sub_array >= 0] = 1 sub_array[sub_array < 0] = 0 sub_array = sub_array.astype(np.uint8) for i in range(8): dst += sub_array[:, :, i] * (2 ** (7 - i)) dst[0, :] = 0 dst[-1, :] = 0 dst[:, 0] = 0 dst[:, -1] = 0 hist = cv2.calcHist([dst], [0], None, [256], [0, 255]) return dst, hist # 返回LBP特征图及灰度直方图
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)