本文是基于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模块可以提供更多的图像处理功能)
Windows+R进入cmd命令行窗口,使用cd命令进入下载好的.whl文件目录下,然后输入以下代码安装文件:
pip install opencv_python-4.5.4-cp38-cp38-win_amd64.whl
提前在相应文件夹下准备一张图片
在开始菜单中找到Spyder打开
在编辑区输入以下代码后点Run file(F5)运行,看能否成功读取图片:
import cv2
img =
cv2.imread("C:/Users/user/Pictures/lena.png", 1)
cv2.imshow("1", img)
cv2.waitKey()
可以看到图片读取成功
在使用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
以下是运行之后的效果图
首先在手机上安装一款APP,如下图所示
进入APP后点击下方的“打开IP摄像头服务器”进入到以下界面,我们接下来需要将电脑和手机连到同一个wifi下,然后使用APP提供的局域网IP地址来获取手机摄像头。(也可以用手机给电脑开热点,不过手机给电脑开热点可能会使电脑无法连接上手机摄像头。)
在此之前我们下载人脸检测xml文件
下载链接:https://pan.baidu.com/s/10iUbJRUA_bdt-zICEjhcAw
提取码:qve4
将其放在代码目录下
获取手机摄像头及人脸检测代码:
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调用手机摄像头并进行人脸检测,本次只是简单的人脸检测,还可以通过不同的数据集来实现更强大的功能。
猫老壳:基于OpenCV调用手机摄像头并实现人脸检测