基于局部二值模式的 LBP 算法的 Python 代码
时间: 2024-05-11 14:15:50 浏览: 97
以下是基于局部二值模式的 LBP 算法的 Python 代码示例:
```python
import cv2
import numpy as np
# 定义计算 LBP 算子的函数
def cal_lbp_pixel(img, center, x, y):
pixel_value = 0
if img[x-1][y-1] >= center:
pixel_value += 128
if img[x-1][y] >= center:
pixel_value += 64
if img[x-1][y+1] >= center:
pixel_value += 32
if img[x][y+1] >= center:
pixel_value += 16
if img[x+1][y+1] >= center:
pixel_value += 8
if img[x+1][y] >= center:
pixel_value += 4
if img[x+1][y-1] >= center:
pixel_value += 2
if img[x][y-1] >= center:
pixel_value += 1
return pixel_value
# 定义计算 LBP 算法的主函数
def cal_lbp(img):
height, width= img.shape
# 初始化 LBP 特征矩阵
lbp_img = np.zeros((height,width),np.uint8)
for i in range(1, height-1):
for j in range(1, width-1):
center = img[i][j]
lbp_value = cal_lbp_pixel(img, center, i, j)
lbp_img[i][j] = lbp_value
return lbp_img
# 读取图像
img_path = 'test.png'
img = cv2.imread(img_path, 0)
# 计算 LBP 特征
lbp_img = cal_lbp(img)
# 显示图像和 LBP 特征
cv2.imshow('img', img)
cv2.imshow('lbp_img', lbp_img)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
注意:以上代码仅为示例代码,可能存在一些不完善或者漏洞,请谨慎使用。
阅读全文