Win7下face_recognition+dlib+opencv环境搭建(Python3.7)

本文分享了一位Python新手在搭建人脸识别项目过程中遇到的问题及解决方案,详细介绍了OpenCV、Cmake、Boost、dlib和face_recognition的安装配置步骤,以及解决缺失组件错误的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

##因为学校有门人工智能的课要做,所以选了个人脸识别。原本以为很轻松,结果对于python新手的我,在环境搭建下就遇到了各种问题,特别记录下来希望可以帮助到人不走弯路。

 

opencv的下载与安装:

方法一:去官网下载whl格式的文件,然后用命令行进入到whl文件所在的文件夹。

pip install opencv_python-3.4.1-cpxx-cpxxm-win_amd64.whl

注意:每个opencv对应的python版本都不一样。如以上的cp37  对应的就是python3.7,还有win_32  就是对应的32位系统,win_amd64对应的就是64位系统,如果你还是不懂自己的Python需要什么版本,推荐使用方法二进行安装。

方法二:直接利用pip安装:

pip install opencv-python

直接进行安装。

如果出现:

Successfully installed opencv-python-x.x.xx

然后再用python命令进入python指令行,输入import cv2,如果没有反应就是安装成功了。

接着是比较简单的Cmake安装和Boost安装:

Cmake安装

这个没什么技术难度,就是从官网下载已经编译好的压缩包,然后解压到一个你知道的地方(这个地方叫做安装目录,后面配置环境要用到)

比如我的安装路径就是:

E:\Cmake

接着就是配置他的环境,电脑->属性->高级系统设置->环境变量

找到系统变量里的path,我的就是这样的:

点击确定。然后打开cmd,输入Cmake

出现这样的情况就说明成功了:

 

Boost安装:

##这是个超级大坑,我被坑了好久,首先注意的就是Boost安装是需要有VS2015以上的环境,也就是你必须要安装有VS2015版本或更新。

将下载好的boost文件运行安装(没错,我下载的是运行安装版,解压版也大同小异,就是要确定安装目录而已)。文章后面我会把文章提及的需要的东西都放一个下载链接。

用VS的命令行运行bootstrap.bat。会得到两个文件b2.exe和bjam.exe。这个时候就成功大半了。

打开一个命令行,进入到b2.exe和bjam.exe文件所在的文件夹,输入:

b2 install

这个过程比较长,要等。

接着就是输入:

b2 -a –with-python address-model=64 toolset=msvc runtime-link=static

如果你是64位就是model=64,  32位就输入model=32.

还要配置变量,同样是进入到环境变量,但是,注意这时候是配置用户变量:

到此,boost就安装完成了。

dlib安装:

用cmd进入到你安装dlib的目录下,执行:

python setup.py install

会得到三个文件夹,分别是,dist,dlib,dlib-egg-info.就说明成功了。

将dlib 和dlib.egg-info  复制到你的python安装的目录下的Lib文件中.

将dlib.pyd文件复制到python安装目录的DLL文件夹下.(dlib.pyd文件在dlib安装目录下的build->lib.win-amd64下。)

然后重启cmd测试:

这就说明成功了。

 

对于face_recognition的安装:

有两种方法:

方法一:直接用pip安装,此方法慢,但是稳妥..

方法二:我是根据方法一,先看他是安装的哪个版本,然后自己去官网下,然后进行安装的...此方法相当的快..

 

 

##途中遇到一个问题,我之前已经安装好opencv,但是不知道为什么就报错了,后来查阅资料发现是缺少组件。

出现这样的提示:ImportError: DLL load failed: 找不到指定的模块

然后是安装了Depends,用depends打开对应的cv2.cp36-win32.pyd文件,会提示缺少具体的什么dll文件.然后去下载,放到C:\Windows\System32和C:\Windows\SysWOW64两个文件夹就可以了。

 

 

下载传送门

 

<think>嗯,用户想在PyCharm里用OpenCVdlibface_recognition库实现人脸识别。首先,我得考虑环境配置的问题。根据引用[2]和[3],这些库的安装可能会遇到问题,尤其是dlib,因为它依赖CMake和C++编译工具。用户可能需要先安装这些依赖项,比如在Windows上可能需要安装Visual Studio的C++构建工具,或者使用预编译的whl文件来简化安装过程。 接下来是项目结构。用户之前提到的目录结构有docs存放图片,可能需要建议在PyCharm中正确设置项目目录,包括源代码、资源文件和文档的置。另外,引用[1]和[4]提到face_recognition库基于dlib的深度学习模型,所以代码中需要正确调用这些库的API。 然后是具体的实现步骤。用户可能需要先完成人脸检测,这可以用OpenCV的Haar级联或者dlib的HOG检测器。接着是人脸特征点检测,比如用dlib的68点模型,再提取特征进行识别。引用[5]提到dlib的应用场景,可能需要指导如何将这些功能整合到代码中。 还要考虑如何在PyCharm中配置环境变量和解释器,确保库的路径正确。引用[3]提到dlibface_recognition版本的适配问题,需要提醒用户注意版本兼容性,避免安装不匹配的版本导致错误。 另外,用户可能遇到性能问题,比如实时检测的延迟。这时候可以建议优化方法,比如缩小图像尺寸,使用多线程处理,或者调整检测频率。引用[4]指出对亚洲人脸的识别准确率可能较低,可能需要建议使用更多的训练数据或调整模型参数。 还有错误处理的问题,比如摄像头无法打开,或者图片路径错误。在示例代码中加入异常处理,帮助用户调试。同时,引用[1]中的示例代码可能需要调整以适应PyCharm的项目结构,比如正确引用图片路径。 最后是测试和验证,用户可能需要知道如何运行代码并查看结果,确保各个模块正常工作。可能还需要集成可视化部分,如显示摄像头画面和识别结果,这部分可以参考用户之前提到的图片集成方案,将处理后的图像保存或实时显示。 总的来说,需要分步骤指导用户配置环境、编写代码、处理常见问题,并结合之前的引用内容提供优化建议和注意事项,确保用户能顺利在PyCharm中实现人脸识别功能。</think>### 在PyCharm中使用OpenCVdlibface_recognition实现人脸识别 --- #### **一、环境配置** 1. **安装核心库**(参考引用[2][3]) ```bash # 安装OpenCV(建议清华镜像加速) pip install opencv-python -i https://pypi.tuna.tsinghua.edu.cn/simple # 安装dlib(需提前安装CMake和C++编译工具链) pip install cmake pip install dlib==19.24.2 # 推荐稳定版本 # 安装face_recognition(依赖dlib) pip install face_recognition ``` 2. **PyCharm项目配置** - 在PyCharm中创建虚拟环境Python 3.7+) - 确认库版本兼容性(参考引用[3][4]): - `dlib 19.24.2` → `face_recognition 1.3.0` - `OpenCV 4.5.5+` --- #### **二、核心代码实现** ##### 1. **人脸检测(OpenCV + dlib)** ```python import cv2 import dlib # 使用OpenCV捕获摄像头 cap = cv2.VideoCapture(0) # 初始化dlib的人脸检测器(HOG模型) detector = dlib.get_frontal_face_detector() while True: ret, frame = cap.read() if not ret: break # 转换为灰度图加速检测(OpenCV预处理) gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY) # dlib检测人脸(返回矩形框坐标) faces = detector(gray, 1) for face in faces: x, y, w, h = face.left(), face.top(), face.width(), face.height() cv2.rectangle(frame, (x, y), (x + w, y + h), (0, 255, 0), 2) cv2.imshow(&#39;Face Detection&#39;, frame) if cv2.waitKey(1) & 0xFF == ord(&#39;q&#39;): break cap.release() cv2.destroyAllWindows() ``` ##### 2. **人脸特征点与识别(face_recognition)** ```python from face_recognition import load_image_file, face_encodings, compare_faces # 加载已知人脸数据(训练阶段) known_image = load_image_file("known_person.jpg") known_encoding = face_encodings(known_image)[0] # 实时识别(结合OpenCV) while True: ret, frame = cap.read() rgb_frame = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB) # face_recognition需RGB格式 # 检测并编码当前帧中的人脸 face_locations = face_recognition.face_locations(rgb_frame) current_encodings = face_recognition.face_encodings(rgb_frame, face_locations) for (top, right, bottom, left), encoding in zip(face_locations, current_encodings): # 与已知人脸比对(阈值默认0.6) match = compare_faces([known_encoding], encoding, tolerance=0.5)[0] label = "Known" if match else "Unknown" # 绘制结果 cv2.rectangle(frame, (left, top), (right, bottom), (0, 255, 0), 2) cv2.putText(frame, label, (left, top - 10), cv2.FONT_HERSHEY_SIMPLEX, 0.7, (0, 255, 0), 2) cv2.imshow(&#39;Face Recognition&#39;, frame) if cv2.waitKey(1) & 0xFF == ord(&#39;q&#39;): break ``` --- #### **三、PyCharm开发技巧** 1. **调试支持** - 设置断点观察人脸坐标数据(如`face_locations`的$[top, right, bottom, left]$值) - 使用PyCharm的“科学模式”实时查看图像矩阵(OpenCV的`frame`变量) 2. **性能优化** - 缩小输入图像尺寸提升速度(如从$1280 \times 720$降至$640 \times 480$): ```python frame = cv2.resize(frame, (640, 480), interpolation=cv2.INTER_LINEAR) ``` - 启用dlib的CUDA加速(需安装`dlib`的GPU版本) 3. **错误处理** - 摄像头权限问题:添加异常捕获 ```python try: cap = cv2.VideoCapture(0) except Exception as e: print(f"摄像头打开失败: {e}") ``` --- #### **四、常见问题解决** 1. **dlib安装失败** - Windows用户需安装Visual Studio的C++构建工具[^3] - 使用预编译的`.whl`文件(参考引用[3]) 2. **亚洲人脸识别率低** - 调整`compare_faces`的`tolerance`参数(值越小越严格) - 增加训练数据量(参考引用[4]) 3. **实时延迟过高** - 使用多线程分离图像捕获和识别逻辑 - 采用间隔帧检测策略(如每5帧处理1次) --- #### **五、应用场景扩展** 1. **门禁系统** - 结合Flask开发Web接口(参考引用[5]) ```python from flask import Flask, Response app = Flask(__name__) @app.route(&#39;/video_feed&#39;) def video_feed(): return Response(gen_frames(), mimetype=&#39;multipart/x-mixed-replace; boundary=frame&#39;) ``` 2. **考勤管理** - 将识别结果存入数据库(如SQLite) ```python import sqlite3 conn = sqlite3.connect(&#39;attendance.db&#39;) cursor = conn.cursor() cursor.execute(&#39;INSERT INTO records (name, timestamp) VALUES (?, ?)&#39;, (label, datetime.now())) ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值