OpenCV调用手机摄像头与人脸检测

Posted 风吹麦甜

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了OpenCV调用手机摄像头与人脸检测相关的知识,希望对你有一定的参考价值。

一、OpenCV机器视觉环境搭建

1. OpenCV下载

本文是基于Windows上Anaconda的OpenCV,在下载OpenCV前需要通过Anconda安装python和各依赖库(具体安装教程自行百度),再使用pip安装OpenCV的.whl文件。

OpenCV下载地址:https://www.lfd.uci.edu/~gohlke/pythonlibs/

进入网站后选择合适版本的OpenCV下载,本文以cp38(python版本3.8),win32_amd64(64位Windows)为例。(注:contrib模块可以提供更多的图像处理功能)

2. OpenCV安装

Windows+R进入cmd命令行窗口,使用cd命令进入下载好的.whl文件目录下,然后输入以下代码安装文件:

pip install opencv_python-4.5.4-cp38-cp38-win_amd64.whl

3. 安装测试

提前在相应文件夹下准备一张图片

在开始菜单中找到Spyder打开

在编辑区输入以下代码后点Run file(F5)运行,看能否成功读取图片:

import cv2
 
img =
cv2.imread("C:/Users/user/Pictures/lena.png", 1)
cv2.imshow("1", img)
cv2.waitKey()

可以看到图片读取成功

二、OpenCV调用摄像头及人脸检测

1. 调用电脑摄像头

在使用OpenCV调用手机摄像头之前我们先尝试调用一下电脑摄像头。

在代码编辑区输入以下代码

#导入opencv模块
import cv2
#捕捉帧,笔记本摄像头设置为0即可
capture = cv2.VideoCapture(0)
#循环显示帧
while(True):
    ret, frame = capture.read()
    #显示窗口第一个参数是窗口名,第二个参数是内容
    cv2.imshow('frame', frame)
    if cv2.waitKey(1) == ord('q'):#按Q退出
        break

以下是运行之后的效果图

2. 调用手机摄像头及人脸检测

2.1 准备工作

首先在手机上安装一款APP,如下图所示

进入APP后点击下方的“打开IP摄像头服务器”进入到以下界面,我们接下来需要将电脑和手机连到同一个wifi下,然后使用APP提供的局域网IP地址来获取手机摄像头。(也可以用手机给电脑开热点,不过手机给电脑开热点可能会使电脑无法连接上手机摄像头。)

2.2 代码实现

在此之前我们下载人脸检测xml文件

下载链接:https://pan.baidu.com/s/10iUbJRUA_bdt-zICEjhcAw

提取码:qve4

将其放在代码目录下

获取手机摄像头及人脸检测代码:

import cv2 as cv 
#读取视频信息。
cap = cv.VideoCapture("http://admin:admin@192.168.137.19:8081")  #@前为账号密码,初始都为admin,后为ip地址
face_xml = cv.CascadeClassifier("haarcascade_frontalface_default.xml") #导入XML文件
while(cap.isOpened()):
    f,img = cap.read()   #读取一帧图片
    gray = cv.cvtColor(img,cv.COLOR_BGR2GRAY)  #转换为灰度图
    face = face_xml.detectMultiScale(gray,1.3,10)    #检测人脸,并返回人脸位置信息

    for (x,y,w,h) in face:
        cv.rectangle(img,(x,y),(x+w,y+h),(255,0,0),2)
    cv.imshow("1",img)
    if cv.waitKey(1) & 0xFF == ord('q'):
        break

cap.release()

运行之后结果如下:

三、总结

通过本次实验,实现了通过OpenCV调用手机摄像头并进行人脸检测,本次只是简单的人脸检测,还可以通过不同的数据集来实现更强大的功能。

四、参考文献

猫老壳:基于OpenCV调用手机摄像头并实现人脸检测

以上是关于OpenCV调用手机摄像头与人脸检测的主要内容,如果未能解决你的问题,请参考以下文章

Android App人脸识别中借助摄像头和OpenCV实时检测人脸讲解及实战(附源码和演示 超详细)

B站Python与OpenCV人脸识别项目超详细记录(对图片视频摄像头人脸的检测)

opencv实现人脸识别 人脸图像采集模块

在 Python 多处理进程中运行较慢的 OpenCV 代码片段

opencv for android 如何实现后台启动摄像头,不显示预览界面

使用OpenCV自带的预训练模型YOLOv3调用摄像头进行目标检测超少代码!懒人必备!