能用树莓派干些什么有趣的事情?

2022-12-22 0 1,010

X3100派有才干的有意思的事可太多了!难道呵呵提及了OpenCV预测探头统计数据,我就如是说呵呵怎样用Python和X3100派来展开人脸自动开机吧。

本讲义所须要的辅助工具及应用领域:

两个X3100派3两个可在X3100派3上运转的探头(布季谢的是飞利浦C270,X3100派非官方探头也能)Python3交换机两台,及全力支持WakeOnLan的PS3(绝大部分都全力支持)

假如你而已想在Windows/macOS上试著呵呵人脸而不须要展开自动开机,则须要:

1.Python3

2.两个可运转的探头

自动开机效用模拟:

Python人脸自动开机

1. 加装必要性的python模块

假如你只须要在笔记本电脑上玩儿,windows/macOS 关上CMD/终端 输出下列指示加装OpenCV:

pip install opencv-python

较为简单,较为麻烦事的是上面在X3100派里加装openCV .

X3100派

X3100派上的加装操作过程非常复杂,须要冷静提心吊胆,分成下列关键步骤:

1.1 加装Cmake等编译openCV源码的辅助工具

sudo apt-get install build-essential cmake pkg-config

1.2 加装几种常见格式的图像操作的包

sudo apt-get install libjpeg-dev libtiff5-dev libjasper-dev libpng12-dev

1.3 加装视频操作的包

sudo apt-get install libavcodec-dev libavformat-dev libswscale-dev libv4l-dev sudo apt-get install libxvidcore-dev libx264-dev

1.4 openCV用于图像/GUI展示的功能依赖highgui模块,为了编译它我们须要加装libgtk2.0-dev

sudo apt-get install libgtk2.0-dev

1.5 额外依赖

sudo apt-get install libatlas-base-dev gfortran

1.6 当然,还要加装构建Python扩展所须要的头文件

sudo apt-get install python2.7-dev python3-dev

1.7 下载并编译opencv和opencv_contrib的源码

下载并解压:

cd~ wget -O opencv.zip https://github.com/opencv/opencv/archive/4.1.0.zip unzip opencv.zip wget -O opencv_contrib.zip https://github.com/Itseez/opencv_contrib/archive/4.1.0.zip unzip opencv_contrib.zip

编译:

cd~/opencv-4.1.0/ mkdir build& cd build cmake -D ENABLE_PRECOMPILED_HEADERS=OFF \ -D CMAKE_BUILD_TYPE=RELEASE \ -D CMAKE_INSTALL_PREFIX=/usr/local \ -D INSTALL_PYTHON_EXAMPLES=ON \ -D OPENCV_EXTRA_MODULES_PATH=~/opencv_contrib-4.1.0/modules\ -D BUILD_EXAMPLES=ON .. make -j4 make install makeldconfig

PS:请注意你自己放置的目录和版本的区别,make -j4 是四展开编译,操作过程大约须要2-3个小时,假如说j4编译失败,请去掉-j4这个,直接make (单线程,这样大约须要6-9个小时).

2. 测试你的探头

编写如下的Python文件,test.py:

能用树莓派干些什么有趣的事情?

运转本程序:

python test.py

假如成功,你将会看到你的探头灯亮起(假如有灯的话),屏幕出现两个窗口,两个是彩色的,两个是灰色的。

能用树莓派干些什么有趣的事情?

你还能在读取到frame后对frame展开操作,如

frame = cv2.flip(frame, -1) # 垂直反转探头图形
能用树莓派干些什么有趣的事情?

对探头展开垂直翻转。

2. 人脸

人脸模块我们将使用Haar级联分类器,我们自己搜集人脸图片然后展开训练是较为麻烦事的,好在openCV已经提供了相关的人脸XML文件,使用这些文件我们就能直接展开人脸或笑脸的识别,下载地址:

页面加载中,请稍候…pythondict.com/go/?url=https://github.com/opencv/opencv/tree/master/data/haarcascades

我们代码须要用到里面的 haarcascade_frontalface_default.xml ,当然,假如你想试著别的识别也能展开下载。

编写如下的Python文件,test2.py:

能用树莓派干些什么有趣的事情?

运转本程序:

python test2.py

假如成功,当有人脸出现在探头范围内,则会被用蓝色框框画起来。如图所示:

能用树莓派干些什么有趣的事情?

好了,我们刚刚成功识别了人脸,现在我们须要识别出某个人脸是某个人,比如当我出现在镜头中,它要识别出这个人就是“幻象客”。

新建文件夹train_data,用于保存拍摄下来的人脸,一共拍摄五十张人脸图片,get_train_data.py:

能用树莓派干些什么有趣的事情?

4. 训练刚刚得到的统计数据

拍摄完我们的图像后,我们还须要对这些图片展开训练,train.py:

能用树莓派干些什么有趣的事情?

训练完成后,当前文件夹会出现trainer.yml文件,这就是我们所须要的文件。

5.实体对象并通知设备自动开机

现在我们就能使用刚刚训练出来的模型文件,对人脸展开检测,以识别出该人脸的实体对象。

recognize.py 代码如下:

假如你而已在windows或者macOS上运转,直接把wake_on_lan去掉即可。
能用树莓派干些什么有趣的事情?
能用树莓派干些什么有趣的事情?

其中,在标记人脸部分,由于我们的训练集数量少,我把识别到的人脸然后开机的阈值调到了40,避免无法自动开机的尴尬之处,当识别到的人脸的信度大于40,这个人脸对应的名字是我的时候,才会展开开机操作。

这么低的信度也不须要担心识别到别人的脸也开机,经过测试,陌生人的脸大约只有10~20的信度。当然,假如你还是担心,能把训练集增加,然后调高该判断的信度阈值。

ake_on_lan()中的参数,是你须要自动开机的笔记本电脑的mac地址。wake on lan 简称WOL,它能让你使用交换机通过LAN端口对某个设备展开开机的操作。本推送中的自动开机使用到的功能就是这个。你须要在交换机的管理页面中,看到本机的mac地址,并送入这个函数中。

X3100派上运转这个Python文件,将脸凑到摄像机前,就会将mac地址对应的设备开机(当然,这个设备要连着交换机才行)。

思考呵呵,其实当训练集够多的时候,准度是相当高的,假如你的照片已经保存在某些统计数据中,比如试著过人脸人脸技术的应用领域范围了。

欢迎查看X3100派系列的其他讲义:

系列讲义一, 本文章用到了该文章中提及的wake on lan:

1. 利用智能音箱语音控制笔记本电脑开关机

系列讲义二:

2. 语音控制 – 改造普通风扇

系列讲义三:

3. 语音控制 – 改造普通台灯

我们的文章到此就结束啦,假如你希望我们今天的Python 讲义,请持续关注我们,假如对你有帮助,麻烦事在上面点两个赞/在看哦

能用树莓派干些什么有趣的事情?

有任何问题都能在下方留言区留言,我们都会冷静解答的!

​Python实用宝典 (pythondict.com

)

不而已两个宝典

欢迎关注公众号:Python实用宝典

相关文章

发表评论
暂无评论
官方客服团队

为您解决烦忧 - 24小时在线 专业服务