目录

一、USB摄像头测试

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

三、face_recognition 的测试方法


face_recognition的使用

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

一、USB摄像头测试

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

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

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
        
        e. 然后在和开发板同一局域网的 Ubuntu PC 或者 Windows PC 或者手机的浏览器中输入【开发板的 IP 地址:8080】就能看到摄像头输出的视频了
        
        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 安装测试成功了

手动安装 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. 等待一段时间会弹出下面的图片,这就是在测试图片中定位到的人脸

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) 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. 等待一段时间会弹出下面的图片,可以看到将图片中的人脸都使用方框标注出来了,并且正确显示了人物的名字

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)中的 01
        
        c. 然后执行下面的命令运行 facerec_from_webcam_faster.py
orangepi@orangepi:~/face_recognition/examples$ python3 facerec_from_webcam_faster.py
        d. 等待一段时间会弹出摄像头的显示画面
        e. 此时可以将摄像头对准自己,当摄像头检测到人脸时,会将检测到的人脸使用方框框起来。注意,检测人脸时,摄像头显示的画面会比较卡顿,请不要移动过快
        f. 还可以打开一张奥巴马的图片,然后使用摄像头对准打开的图片,可以看到不仅能将人脸标注出来,还能正确显示检测到的人脸的名字。注意,检测人脸时,摄像头显示的画面会比较卡顿,请不要移动过快

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 "file=@obama2.jpg" 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 "file=@obama2.jpg" http://192.168.1.79:5001

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

                b) 然后将 obama2.jpg 复制到桌面
orangepi@orangepi:~/face_recognition/examples$ cp obama2.jpg /home/orangepi/Desktop/
                c) 然后在浏览器中选择刚才复制的图片
                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) —— 香橙派摄像头加入设备工厂

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

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

    这里的摄像头只是当作一个设备去用,目前实现通过串口指令然后system()进行拍照.然后翔云平台进行人脸对比,未实现自动人脸检测(不会py).所以摄像头没有另创线程.但是做视频监控可以另创线程. 监控 ...

  2. 智能家居-基于香橙派zreo2——手把手搭建、继电器控制灯(一)

    一.什么是设计模式 设计模式(Design pattern)代表了最佳的实践,通常被有经验的面向对象的软件开发人员所采用.设计模式是软件开发人员在软件开发过程中面临的一般问题的解决方案.这些解决方案是 ...

  3. 智能家居语音控制及摄像头人脸识别(含代码)

    智能家居语音控制及摄像头人脸识别 1.使用的软件及过程 2.python 人脸代码讲解 3.主函数代码讲解 1.使用的软件及过程 使用到的软件有secureSRT,filezilla,Visual S ...

  4. 香橙派Pi5安装个性化桌面Komorebi

    香橙派Pi5安装个性化桌面Komorebi 一.准备器材 二.下载Komorebi的源码 三.编写自动化安装脚本(可以直接复制到命令行里面运行) 四.运行效果 一.准备器材 香橙派Pi5,一个nvme ...

  5. 香橙派4安装浏览器firefox

    香橙派4安装浏览器firefox 最开始安装chroium和firefox结果安不上,后头换了系统版本安装firefox就可以安装上了 linux版本为5.10.43 sudo apt-get upd ...

  6. 香橙派pi5安装debian操作系统

    1.香橙派pi5是arm64的64位cpu硬件架构.需要安装arm64位的debian系统,这里直接使用官网系统 操作系统下载地址: Orange Pi - Orangepi 选择debian系统,通 ...

  7. 【智能家居】Home Assistant入门安装并内网穿透实现远程安全控制

    文章目录 前言 1. 安装Home Assistant 2. 配置Home Assistant 3. 安装cpolar内网穿透 3.1 windows系统 3.2 Linux系统 3.3 macOS系 ...

  8. 【基于stm32f103C8T6-小程序智能家居项目实战-自绘PCB到实现功能一条龙+30分钟解决-各种bug已修复】

    项目演示: 阿熊智能家居演示 文章目录 项目演示: 整体结构 硬件清单 核心板 STM32F103C8T6 WIFI模块 ESP8266-01s 传感器 DHT11温湿度传感器 BH1750光照传感器 ...

  9. 树莓派(Raspbian)+motion+树莓派摄像头——实现局域网监控功能

    文章目录 安装motion 配置motion 1.编辑motion 2.修改motion的配置文件 3.启动motion 4.查看实现效果 安装motion 打开命令行输入: sudo apt-get ...

最新文章

  1. 推荐60+ Flex开发参考网站
  2. cannot be registered to your development team. Change your bundle identifier to a unique string to t
  3. python第三方库numpy-Python第三方库之Numpy库
  4. OpenCV 相机校正
  5. 修改联想笔记本键盘快捷键
  6. #region的快捷键+++从一个页面中弹出一个新窗口,当新窗口关闭时刷新原窗口!...
  7. HTML5中的WebSocket
  8. 《华为时间管理培训》笔记
  9. ubuntu 16.04安装显卡驱动
  10. 计算广告学涉及的学科与技术
  11. c语言将一句英文逆序输出,C++实现英文句子中的单词逆序输出的方法
  12. 转发:神了,Fly_by结构原来就这么回事儿!
  13. THE FOOL 【找规律】
  14. Java数据结构—堆(Heap)
  15. 中泰语快速进行在线翻译的方法
  16. 基于Detectron2的BlendMask训练 BlendMask环境配置 COCO数据集
  17. 狂神说 SpringBoot 笔记
  18. ssi整合,即spring、springmvc、mybatis终极整合,包括一些优化
  19. VMware虚拟机链接克隆和完整克隆区别
  20. 在产业互联网诞生之初,其仅被当成是互联网的衍生品和避风港

热门文章

  1. 安卓程序设计课程表app源码
  2. 终于把进程和线程学会了
  3. odoo pdf 数字签名问题
  4. 超级块 i节点 数据块 目录块 间接块
  5. iPhone14升级iOS16.4正式版后无法连接WiFi怎么办?
  6. 今年第一所大学改考408!广东工业大学
  7. 安卓三维展示源码_【复古传奇三维版】176、3D版复古打金传奇特色结拜、结婚、铭文等系统,玩法丰富...
  8. iOS UILabel 文字 置顶/置底 实现
  9. 10克常规表达式(REGEXP_SUBSTR)
  10. Oracle 12c备份与恢复