四时宝库

程序员的知识宝库

闲着学的什么系列-之四(闲着闲着怎么写)



为了增加趣味性,不打算按部就班的按照顺序学习,上回讨论了一下数据收集的一点皮毛,今天我们尝试一下人脸识别吧,利用你计算机的摄像头,或者USB即插即用的外置摄像头也行。看完今天的教程,你一定也能做出一个人脸识别的程序来,而且用不了多少代码,好了,开工吧。

在正式写代码之前,确保你的计算机安装了openCV,openCV是一个基于BSD许可(开源)发行的跨平台计算机视觉库,可以运行在Linux、Windows、Android和Mac OS操作系统上。

和之前安装第三方库一样,在终端下输入以下命令:

pip install opencv-python

等安装好了输入>import cv2 as cv 测试一下,如果没有出现错误提示,而是换行出现>>>,说明安装成功了。好的接下来我测试输入几行代码测试一下openCV, 你可以在jupyter notebook上面运行或者用其它你喜欢的IDE都可以,建议你先使用notepad++ 或者editplug专门的代码编辑器。这两个工具均可以免费下载使用。

测试代码:


确保d:\python\文件夹中含有test.jpg测试图片,代码写好之后保存到一个目录下面,比如d:\python文件夹中,保存文件名为test1.py, 当然你可以自己建一个文件夹用于存放代码。然后在命令终端进入到这个文件夹,然后用以下命令运行python脚本。

d:\python\ python test1.py 回车运行脚本。

如果不出意外,程序运行完会出现测试图片窗口。

简单解释一下上面的脚本:

第一行带#号的是注释,解释代码用的,便于程序的阅读和理解

第二行导入我们开始安装的opencv库

第四行用cv的一个.imread()方法读取一张外部图片并存入img变量

第六行用namedWindow()方法定义一个叫Image的窗口

第七行用imshow()方法把图片img通过叫Image的窗口来显示

第八行.waitKey()方法接受键盘输入,0表示任意键输入

最后一行.destroyAllWindows()方法销毁所有显示的窗体,也就是说当检测到键盘输入后,窗体关闭。也就是退出程序了。是不是很好理解,至于那些方法怎来的,你不用太细究,这些方法都是cv2模块定义好的,直接拿来用就行了。以下是我机子上测试的效果,显示一张企鹅图:


到此为止,你已经离梦想又进了一步,呵呵。

接下来,我们试试怎么调用摄像头来获取视频或图像,这个为接下来的人脸识别打下基础:


例程已经有非常详细的注解了,我就不另外说明。获取摄像头视频是不是也很简单?不到15行的代码。好了离我们的目标又进了一步,接下来怎么识别图像中的人脸呢?

要识别出人脸,必须下载haar特征分类器,如果你是直接从openCV官网下载并单独安装的话,可以在opencv目录里面找到分类器,我机子上的目录是C:\opencv\sources\data\haarcascades

下载OpenCV中的Haar特征分类器,你可以从Opencv官网下载源程序解压后获得Haar特征分类器,也可以直接下载所需的xml文件。我建议你从官网下载,解压后可以找到haar目录,下面程序目录记住相应做更改。

完整代码如下,多了几行代码,但还是很简洁的:


运行效果如图:


是不是没有你想象的这么复杂呢?当然,我们借助了好几个库,所有直接调用了一些方法,只要我们知道怎么使用这些方法就行。真正不需要你敲多少代码。保留你的好奇心,后面还有更有意思的应用等着你,我们将在后面学习了语言合成之后,让计算机真正识别出你是谁,而不只是圈出视频中的脸而已,好了,写了好几个小时了,得休息一下了,下次再会。

发表评论:

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言
    友情链接