智能家居(6) —— 香橙派摄像头安装实现监控功能

目录

一、USB摄像头测试

二、face_recognition 人脸识别库的安装和测试方法

三、face_recognition 的测试方法


face_recognition的使用

        定位人脸,人脸识别,识别单张图片中人脸的关键点,识别人脸并使用方框标注,比较两个人脸是否属于一个人,识别未知图片中的人脸是谁,识别 USB 摄像头中的人脸,使用 Web 服务上传图片运行人脸识别,face_detection 命令测试示例

一、USB摄像头测试

1) 首先将 USB 摄像头插入到 Orange Pi 开发板的 USB 接口中

2) 然后通过 lsmod 命令可以看到内核自动加载了下面的模块

智能家居(6) —— 香橙派摄像头安装实现监控功能_第1张图片

3) 通过 v4l2-ctl 命令可以看到 USB 摄像头的设备节点信息为 /dev/video0

orangepi@orangepi:~$ sudo apt update 
orangepi@orangepi:~$ sudo apt install -y v4l-utils 
orangepi@orangepi:~$ v4l2-ctl --list-devices

 

注意 v4l2 中的 l 是小写字母 l ,不是数字 1
另外 video 的序号不一定都是 video0 ,请以实际看到的为准。
4) 使用 mjpg-streamer 测试 USB 摄像头

        a. 下载 mjpg-streamer

                a) Github 的下载地址:
git clone https://github.com/jacksonliam/mjpg-streamer
                b) Gitee 的镜像下载地址为:
git clone https://gitee.com/leeboby/mjpg-streamer
        b. 安装依赖的软件包
                a) Ubuntu 系统
orangepi@orangepi:~$ sudo apt-get install -y cmake libjpeg8-dev
                b) Debian 系统
orangepi@orangepi:~$ sudo apt-get install -y cmake libjpeg62-turbo-dev
        c. 编译安装 mjpg-streamer
 
orangepi@orangepi:~$ cd mjpg-streamer/mjpg-streamer-experimental
orangepi@orangepi:~/mjpg-streamer/mjpg-streamer-experimental$ make -j4
orangepi@orangepi:~/mjpg-streamer/mjpg-streamer-experimental$ sudo make install
        d. 然后输入下面的命令启动 mjpg_streamer
注意, video 的序号不一定都是 video0 ,请以实际看到的为准。
orangepi@orangepi:~/mjpg-streamer/mjpg-streamer-experimental$ export LD_LIBRARY_PATH=.
orangepi@orangepi:~/mjpg-streamer/mjpg-streamer-experimental$sudo ./mjpg_streamer -i "./input_uvc.so -d /dev/video0 -u -f 30" -o "./output_http.so -w ./www"
vi start.sh 智能家居(6) —— 香橙派摄像头安装实现监控功能_第2张图片
        
        e. 然后在和开发板同一局域网的 Ubuntu PC 或者 Windows PC 或者手机的浏览器中输入【开发板的 IP 地址 :8080 】就能看到摄像头输出的视频了
智能家居(6) —— 香橙派摄像头安装实现监控功能_第3张图片
        
        f. 推荐使用 mjpg-streamer 来测试 USB 摄像头,比 motion 流畅很多,使用 mjpg-streamer 感觉不到任何卡顿

二、face_recognition 人脸识别库的安装和测试方法

        注意,此小节的内容都是在 桌面版本 Linux 系统中测试的,所以请确保开发 板使用的系统为桌面版本的系统。
        另外下面的安装测试都是在 orangepi 用户下进行的,请保持环境一致。
face_recognition 源码仓库的地址为:
https://github.com/ageitgey/face_recognition
face_recognition 中文版本的说明文档为:
https://github.com/ageitgey/face_recognition/blob/master/README_Simplified_Chi
nese.md

使用脚本自动安装 face_recognition 的方法

1) 首先在桌面中打开一个终端,然后下载 face_recognition_install.sh

orangepi@orangepi:~/Desktop$ wget 
https://gitee.com/leeboby/face_recognition_install/raw/master/face_recognition_install.sh

2) 然后执行下面的命令开始安装 face_recognition

orangepi@orangepi:~/Desktop$ bash face_recognition_install.sh
3) face_recognition 安装完后会自动下载 face_recognition 的源码,然后自动运行face_recognition 中的一些示例,如果最后能看到桌面上弹出了下面的这些图片就说明 face_recognition 安装测试成功了

智能家居(6) —— 香橙派摄像头安装实现监控功能_第4张图片

 手动安装 face_recognition 的方法参考用户手册

三、face_recognition 的测试方法

        注意,下面的操作都是在桌面中演示的,所以首先请连接好 HDMI 显示器,或
者使用 NoMachine/VNC 远程登录 Linux 桌面来测试。
1) face_recognition 的源码中有一些示例代码,我们可以直接用来测试,face_recognition 源码的下载地址如下所示:

        a. GitHub 官方的下载地址

orangepi@orangepi:~$ git clone https://github.com/ageitgey/face_recognition.git
        b. Gitee 镜像下载地址
orangepi@orangepi:~$ git clone https://gitee.com/leeboby/face_recognition.git
2) face_recognition 示例代码的路径如下所示
face_recognition/examples
3) face_recognition 的中文说明文档链接如下所示,使用 face_recognition 前请仔细阅
读下
https://github.com/ageitgey/face_recognition/blob/master/README_Simplified_Chi
nese.md
4) find_faces_in_picture.py 用来在图片中定位人脸的位置,测试步骤如下所示
        a. 在桌面中打开一个终端,然后进入 face_recognition/examples 目录,再执行下面的命令
orangepi@orangepi:~$ cd face_recognition/examples
orangepi@orangepi:~/face_recognition/examples$ python3 find_faces_in_picture.py
I found 1 face(s) in this photograph.
A face is located at pixel location Top: 241, Left: 419, Bottom: 562, Right: 740

        b. 等待一段时间会弹出下面的图片,这就是在测试图片中定位到的人脸

智能家居(6) —— 香橙派摄像头安装实现监控功能_第5张图片

5) find_facial_features_in_picture.py 用来识别单张图片中人脸的关键点,测试步骤如下所示
        
        a. 在桌面中打开一个终端,然后进入 face_recognition/examples 目录,再执行下面的命令
orangepi@orangepi:~$ cd face_recognition/examples
orangepi@orangepi:~/face_recognition/examples$ python3  find_facial_features_in_picture.py
        b. 等待一段时间会弹出下面的图片,可以看到将人脸轮廓都标注出来了

智能家居(6) —— 香橙派摄像头安装实现监控功能_第6张图片

6) identify_and_draw_boxes_on_faces.py 用来识别人脸并使用方框标注,测试步骤如下所示

        a. 在桌面中打开一个终端,然后进入 face_recognition/examples 目录,再执行下面的命令
orangepi@orangepi:~$ cd face_recognition/examples
orangepi@orangepi:~/face_recognition/examples$ python3  identify_and_draw_boxes_on_faces.py
        b. 等待一段时间会弹出下面的图片,可以看到将图片中的人脸都使用方框标注出来了,并且正确显示了人物的名字

智能家居(6) —— 香橙派摄像头安装实现监控功能_第7张图片

7) face_distance.py 用来在不同精度上比较两个人脸是否属于一个人,首先打开一个终端,然后进入 face_recognition/examples 目录,再执行下面的命令就可以看到测试的输出结果
orangepi@orangepi:~$ cd face_recognition/examples
orangepi@orangepi:~/face_recognition/examples$ python3 face_distance.py
The test image has a distance of 0.35 from known image #0
- With a normal cutoff of 0.6, would the test image match the known image? True
- With a very strict cutoff of 0.5, would the test image match the known image? True
The test image has a distance of 0.82 from known image #1
- With a normal cutoff of 0.6, would the test image match the known image? False
- With a very strict cutoff of 0.5, would the test image match the known image?
        False

8) recognize_faces_in_pictures.py 用来识别未知图片中的人脸是谁。首先打开一个终端,然后进入 face_recognition/examples 目录,再执行下面的命令,等待一端时间后就能看到测试结果
orangepi@orangepi:~$ cd face_recognition/examples
orangepi@orangepi:~/face_recognition/examples$ python3 \
recognize_faces_in_pictures.py
Is the unknown face a picture of Biden? False
Is the unknown face a picture of Obama? True
Is the unknown face a new person that we've never

9) facerec_from_webcam_faster.py 用来识别 USB 摄像头中的人脸,测试步骤如下所示:
        a. 首先请将 USB 摄像头插入开发板的 USB 接口中,然后通过 v4l2-ctl 注意 v4l2 中的 l 是小写字母 l ,不是数字 1 )命令查看下 USB 摄像头的设备节点的序号
        b. 然后在桌面中打开一个终端,进入 face_recognition/examples 目录后,首先修改下 facerec_from_webcam_faster.py 中使用的摄像头的设备序号。比如上面通过 v4l2-ctl --list-devices 命令查看到 USB 摄像头为 /dev/video1 ,那就修改 cv2.VideoCapture(0) 中的 0 1
        
        c. 然后执行下面的命令运行 facerec_from_webcam_faster.py
orangepi@orangepi:~/face_recognition/examples$ python3 facerec_from_webcam_faster.py
        d. 等待一段时间会弹出摄像头的显示画面
        e. 此时可以将摄像头对准自己,当摄像头检测到人脸时,会将检测到的人脸使用方框框起来。注意,检测人脸时,摄像头显示的画面会比较卡顿,请不 要移动过快
        f. 还可以打开一张奥巴马的图片,然后使用摄像头对准打开的图片,可以看到不仅能将人脸标注出来,还能正确显示检测到的人脸的名字。注意,检测人 脸时,摄像头显示的画面会比较卡顿,请不要移动过快

智能家居(6) —— 香橙派摄像头安装实现监控功能_第8张图片

10) web_service_example.py 是一个非常简单的使用 Web 服务上传图片运行人脸识别的案例,后端服务器会识别这张图片是不是奥巴马,并把识别结果以 json 键值对输出,测试步骤如下所示:
        a. 在桌面中打开一个终端,然后进入 face_recognition/examples 目录,再执行下面的命令( 如果是使用脚本自动安装的 face_recognition ,那么就不需要 安装 flask

orangepi@orangepi:~$ python3 -m pip install flask

orangepi@orangepi:~$ cd face_recognition/examples

root@orangepi:~/face_recognition/examples$ python3 web_service_example.py

        b. 然后运行下面的命令就可以返回图片识别的结果(注意,下面的命令执行路径为 face_recognition/examples

orangepi@orangepi:~/face_recognition/examples$ curl -XPOST -F "[email protected]" http://127.0.0.1:5001
{
"face_found_in_image": true,
"is_picture_of_obama": true
}
        c. 我们也可以将 face_recognition/examples/obama2.jpg 这张图片拷贝到其他的 Linux 电脑中,当然也可以自己准备一张名为 obama2.jpg 的图片,然后在 Linux 电脑中可以使用下面的命令远程通过开发板运行的服务来识别人脸(注意命令中的 IP 地址需要替换为开发板的 IP 地址, file 后的文件名需 要替换为想要测试的图片的名字

 test@test:~$ curl -XPOST -F "[email protected]" http://192.168.1.79:5001

        d. 使用浏览器测试的方法如下所示:
                a) 首先打开浏览器,然后在浏览器的地址栏输入开发板的 IP 地址 :5001 ,然后就能看到下面的页面

智能家居(6) —— 香橙派摄像头安装实现监控功能_第9张图片

                b) 然后将 obama2.jpg 复制到桌面
orangepi@orangepi:~/face_recognition/examples$ cp obama2.jpg /home/orangepi/Desktop/
                c) 然后在浏览器中选择刚才复制的图片
智能家居(6) —— 香橙派摄像头安装实现监控功能_第10张图片

                d) 然后点击 Upload 上传刚才选择的图片进行人脸识别
                e) 等待一段时间后就会显示检测的结果
11) face_detection 命令测试示例
详情请看用户手册

智能家居项目目录

智能家居(1) —— 工厂模式引入&工厂模式实现继电器控制

智能家居(2) —— 工厂模式实现烟雾报警

智能家居(3) —— 串口通信(语音识别)线程控制

智能家居(4) —— 网络服务器线程控制

智能家居(5) —— 智能家居项目整合(语音控制线程,网络控制线程、烟雾报警线程)

网络编程知识预备(1) —— 7层OSI网络模型

网络编程知识预备(2) —— 三次握手与四次挥手、半连接状态、2MSL

网络编程知识预备(3) —— TCP流量控制(滑动窗口)、拥塞控制

网络编程知识预备(4) —— SOCKET、TCP、HTTP之间的区别与联系

网络编程知识预备(5) —— 了解应用层的HTTP协议与HTTPS协议

网络编程知识预备(6) —— libcurl库简介及其编程访问百度首页

智能家居(6) —— 香橙派摄像头安装实现监控功能

智能家居(7) —— 人脸识别 & 翔云平台编程使用(编译openSSL支持libcurl的https访问、安装SSL依赖库openSSL)

智能家居(8) —— 香橙派摄像头加入设备工厂

你可能感兴趣的:(【Linux智能家居】,linux)