Mind+OpenCV —— 用Python模式 十分钟搞定人脸检测
## 简介
OpenCV库是一个常用的开源图像处理库,有Python版本,可以实现画图、人脸识别等功能,使用简单,功能强大。
Mind+的Python模式可以非常简单的部署环境,使用也非常简单,因此在Mind+中使用OpenCV可以非常快速的实现人脸识别。
## 安装
常规OpenCV安装会比较麻烦,但是使用Mind+则非常简单,可以一键安装依赖库。
- 安装Mind+1.7.0及以上版本 http://mindplus.cc
- 打开软件,切换到**Python模式**,等待终端出现Python信息。
![](data/attachment/album/202103/04/195254sii59ns53uxuqskm.png)
- 点击**库管理**,首次打开等待一下初始化完成,切换到**阿里源**,选择**图像处理**中的opencv-Python,点击安装,等待完成,如果安装慢(超过半小时)可以尝试重启软件后切换不同的Python源。
![](data/attachment/album/202103/04/195310z24f00f24o0404ib.png)
## 使用
## 环境检测
- 安装完成之后,可以在终端输入命令查看当前使用的openCV版本:
依次输入:
``` import cv2``` 回车
```print(cv2.__version__)``` 回车,可以看到当前cv2的版本号,能正确输出则说明安装没有问题
![](data/attachment/album/202103/04/195325mt6jez2dvz1n6n5e.png)
## 摄像头窗口显示
- OpenCV对于窗口显示非常简单,新建一个文件双击打开,输入如下代码:
![](data/attachment/album/202103/04/195410azj2l6lljj2n4lwf.png)
```python
#-*- coding: UTF-8 -*-
import cv2 as cv
cap = cv.VideoCapture(0) #打开编号0的摄像头
while(True):
# 获取摄像头帧数据
ret, frame = cap.read()
# 处理为灰度帧
gray = cv.cvtColor(frame, cv.COLOR_BGR2GRAY)
# 使用两个窗口显示获取的内容
cv.imshow('frame',frame)
cv.imshow('gray',gray)
#间隔一段时间显示,如果按下Q键则退出
if cv.waitKey(20) & 0xFF == ord('q'):
break
# 退出
cap.release()
cv.destroyAllWindows()
```
- 打开或插上电脑摄像头,点击运行,稍等片刻就会看到弹出两个窗口显示了摄像头画面,一个彩色一个灰色。
> 注意:如果串口没有数据显示,则可能电脑摄像头编号不是0,尝试修改为其他,或者查看设备管理器中摄像头是否正常,以及检查安全软件是否拦截。
![](data/attachment/album/202103/04/195436fjvny6hevevnnzpi.png)
## 人脸识别
- 前面说过opencv库自带了一些识别算法,其中就包含人脸检测算法,输入如下代码。
```python
#-*- coding: UTF-8 -*-
import cv2 as cv
# 导入内置的模型文件,此文件在opencv库文件夹下,使用cv.data.haarcascades +的方式即可引用
face_cascade = cv.CascadeClassifier(cv.data.haarcascades +'haarcascade_frontalface_default.xml')
cap = cv.VideoCapture(0) #打开编号0的摄像头
while(True):
# 获取摄像头帧数据
ret, frame = cap.read()
# 处理为灰度帧
gray = cv.cvtColor(frame, cv.COLOR_BGR2GRAY)
# 使用人脸识别模型识别
faces = face_cascade.detectMultiScale(gray,1.3,5)
# 将识别到的结果坐标在画面上画一个矩形框
for (x,y,w,h) in faces:
frame = cv.rectangle(frame,(x,y),(x+w,y+h),(255,0,0),2)
# 显示有框的画面
cv.imshow('frame',frame)
#间隔一段时间显示,如果按下Q键则退出
if cv.waitKey(20) & 0xFF == ord('q'):
break
# 退出
cap.release()
cv.destroyAllWindows()
```
- 点击**运行**代码,将摄像头对着人脸,则人脸上就会被标记出来。
![](data/attachment/album/202103/04/195459eagagtw9fmsywtmm.png)
- 获取到人脸坐标之后,接下来就可以使用坐标做其他控制操作了
这个人脸识别是使用级联分类器? liweilin 发表于 2021-3-5 00:08
这个人脸识别是使用级联分类器?
对的这是opencv自带的https://github.com/opencv/opencv/tree/master/data/haarcascades
https://zhuanlan.zhihu.com/p/63154631 学习了,每天来看看,总能学到不少新知识 我这里一直转圈安装不上去怎么办? gray6666 发表于 2021-3-25 12:48
我这里一直转圈安装不上去怎么办?
切换成阿里云,重启软件之后再加载试试
如果还是不行尝试电脑连接手机热点 使用这个程序出现如下报错,怎么解决:Traceback (most recent call last): File "C:\Users\COOLHUA\Documents\mindplus-py\user\2021-12-01-08-19-45\opencv.py", line 13, in <module> gray = cv.cvtColor(frame, cv.COLOR_BGR2GRAY) cv2.error: OpenCV(4.5.4) D:\a\opencv-python\opencv-python\opencv\modules\imgproc\src\color.cp>>>82: error: (-215:Assertion failed) !_src.empty() in function 'cv::cvtColor' Coolhua 发表于 2021-12-1 08:37
使用这个程序出现如下报错,怎么解决:Traceback (most recent call last): File "C:%users\COOLHUA\Docu ...
应该是没有读取到摄像头,打开设备管理器看一下照相机项目下面有没有摄像头,你可以试试调整这个编号
cap = cv.VideoCapture(0) #打开编号0的摄像头
页:
[1]