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模块可以提供更多的图像处理功能)

OpenCV调用手机摄像头与人脸检测_第1张图片

2. OpenCV安装

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

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

OpenCV调用手机摄像头与人脸检测_第2张图片

3. 安装测试

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

在开始菜单中找到Spyder打开

OpenCV调用手机摄像头与人脸检测_第3张图片

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

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

OpenCV调用手机摄像头与人脸检测_第4张图片

可以看到图片读取成功

二、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

以下是运行之后的效果图

OpenCV调用手机摄像头与人脸检测_第5张图片

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

2.1 准备工作

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

OpenCV调用手机摄像头与人脸检测_第6张图片

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

OpenCV调用手机摄像头与人脸检测_第7张图片

2.2 代码实现

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

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

提取码:qve4

将其放在代码目录下

OpenCV调用手机摄像头与人脸检测_第8张图片

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

import cv2 as cv 
#读取视频信息。
cap = cv.VideoCapture("http://admin:[email protected]: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调用手机摄像头与人脸检测_第9张图片

OpenCV调用手机摄像头与人脸检测_第10张图片

三、总结

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

四、参考文献

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

你可能感兴趣的:(opencv,计算机视觉,python)