900字范文,内容丰富有趣,生活中的好帮手!
900字范文 > OpenCV调用手机摄像头与人脸检测

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

时间:2022-02-19 05:15:39

相关推荐

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

文章目录

一、OpenCV机器视觉环境搭建1. OpenCV下载2. OpenCV安装3. 安装测试二、OpenCV调用摄像头及人脸检测1. 调用电脑摄像头2. 调用手机摄像头及人脸检测2.1 准备工作2.2 代码实现三、总结四、参考文献

一、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 cv2img =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文件

下载链接:/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'):breakcap.release()

运行之后结果如下:

三、总结

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

四、参考文献

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

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。