Opencv3和Python 2.7在虚拟环境中 - AttributeError: 'module'对象没有属性'createLBPHFaceRecognizer'。

11

我有一个带有OpenCV 3的Python函数,它可以在没有虚拟环境的情况下正常工作。此外,我从pyimagesearch安装了venv的opencv。但是当我尝试在venv上运行该Python函数时,会出现错误:

AttributeError: 'module' object has no attribute 'createLBPHFaceRecognizer'

在终端中没有venv:

gkhan@Gkan ~/Masaüstü/face_recognizer $ python face_recognizer.py
Yol :./sinif/114.jpg.
114 Yuz Tanindi 12

在终端中使用虚拟环境:

gkhan@Gkan ~/Masaüstü/face_recognizer $ workon cv
(cv)gkhan@Gkan ~/Masaüstü/face_recognizer $ python face_recognizer.py
Traceback (most recent call last):
  File "face_recognizer.py", line 15, in <module>
    recognizer = cv2.createLBPHFaceRecognizer()
AttributeError: 'module' object has no attribute 'createLBPHFaceRecognizer'

我的Python代码:

#!/usr/bin/python
# -*- coding: utf-8 -*-

import cv2, os
import numpy as np
from PIL import Image

# For Test
if 0==0:

    cascadePath = "haarcascade_frontalface_default.xml"
    faceCascade = cv2.CascadeClassifier(cascadePath)

    recognizer = cv2.createLBPHFaceRecognizer()
...

我在 Linux Mint 64 位操作系统上运行 Python 2.7 和 Opencv3。

6个回答

12

从OpenCV 3开始,您需要获取并构建opencv_contrib存储库。然后您可以使用子模块“face”。

在cv2中的cv2.face模块上提供帮助:

NAME
    cv2.face

FILE
    (built-in)

FUNCTIONS
    createEigenFaceRecognizer(...)
        createEigenFaceRecognizer([, num_components[, threshold]]) -> retval

    createFisherFaceRecognizer(...)
        createFisherFaceRecognizer([, num_components[, threshold]]) -> retval

    createLBPHFaceRecognizer(...)
        createLBPHFaceRecognizer([, radius[, neighbors[, grid_x[, grid_y[, threshold]]]]]) -> retval

你现在可以使用cv2.face.createLBPHFaceRecognizer()


非常感谢,我没有看到面部子模块。现在它可以工作了。 - Gkan
如何在Windows上构建它? - Gokul NC
OpenCV的官方网站对安装有非常清晰的介绍。点击这里 - Rick

5

对我来说最简单的方法是使用Anaconda软件包:

conda install -c menpo opencv3=3.1.0

安装完成后,使用cv2.face.createLBPHFaceRecognizer()或其他人脸识别器。希望这可以帮助到您。

如何安装conda? - Dev

4

试一下

运行以下命令以安装contrib

python -m pip install opencv-contrib-python

完成后,使用此属性

recoginizer = cv2.face.LBPHFaceRecognizer_create()

2

对于 Python 版本 3.6,使用以下内容:

rec = cv2.face.LBPHFaceRecognizer_create();

您的意思是OpenCV版本为3.0及以上。 - Jeru Luke

0

对于 Python 版本 3.6.x,可以按照以下步骤操作:

打开终端并安装 opencv-contrib-python 库。

python -m pip install opencv-contrib-python

当你完成后使用这个

recoginizer = cv2.face.LBPHFaceRecognizer_create()

如果您想要更多选项,可以这样做:

print(help(cv2.face))

0
对于使用Python 3的Windows用户,您可以从此处获取opencv_contrib。我的系统是64位的,因此我使用了 opencv_python-3.3.0+contrib-cp36-cp36m-win_amd64.whl 。如果您是32位,则选择32位版本。

打开命令提示符并导航到下载文件夹,然后使用以下命令

pip install opencv_python-3.3.0+contrib-cp36-cp36m-win_amd64.whl

注意:使用类似于您刚下载的文件的命令,并确保在安装新版本的contrib之前卸载旧版本。我必须运行以下命令:
pip uninstall opencv_python-3.3.0-cp36-cp36m-win_amd64.whl

在进行新安装之前。

然后确保它成功。

>>>import cv2
>>>cv2.face
<module 'cv2.face'>

不要使用createLBPHFaceRecognizer(),而是使用LBPHFaceRecognizer_create()


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接