'cv2.face_LBPHFaceRecognizer' object has no attribute 'getHistogram'怎么解决
时间: 2023-09-28 16:06:20 浏览: 154
AttributeError: module 'tensorflow.compat.v1' has no attribute '
在新版的 OpenCV(4.0及以上版本)中,`cv2.face.LBPHFaceRecognizer` 没有 `getHistogram` 方法。相反,它提供了一个名为 `compute` 的方法来计算 LBPH 特征直方图。以下是一个相应的代码示例:
```python
import cv2
import numpy as np
# 提取图像的 LBPH 特征
def extract_lbph_feature(image):
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
# 创建 LBPH 特征提取器
recognizer = cv2.face.LBPHFaceRecognizer_create()
# 训练 LBPH 特征提取器
labels = np.array([0]) # 假设只有一个标签
faces = [gray] # 假设只有一张人脸图像
recognizer.train(faces, labels)
# 提取 LBPH 特征
_, lbph_feature = recognizer.compute(gray)
return lbph_feature
# 示例用法
image = cv2.imread('image.jpg') # 读取图像
lbph_feature = extract_lbph_feature(image)
print("LBPH Feature:", lbph_feature)
```
在这个代码示例中,我们使用了新版的 OpenCV(4.0及以上版本)提取图像的 LBPH 特征。
`extract_lbph_feature` 函数将彩色图像转换为灰度图像,并使用 `cv2.face.LBPHFaceRecognizer_create` 创建了一个 LBPH 特征提取器。
然后,我们传入灰度图像并使用 `train` 方法进行训练。
最后,我们使用 `compute` 方法来计算 LBPH 特征直方图,并将结果存储在 `lbph_feature` 变量中。
请注意,LBPH 特征提取器和 `compute` 方法只适用于人脸识别任务。如果你想用 LBPH 特征提取器提取其他类型的图像特征,可能需要使用其他方法或库。
阅读全文