树莓派4b之初学者入门人脸识别(手把手完整版)

2023-11-03

前言:

树莓派的性能日益强大,树莓派4b相比上一代的能有了很大的提升,采用了博通最新的BCM4908 64bit处理器,内存从1G升级到2G和4G,视频支持4K,价格依旧美丽。本文将从硬件和软件出发,手把手与大家分享如何用树莓派实现人脸识别,包括硬件配置环境搭载代码详解程序部署

硬件工具准备:

  • 32G内存卡
  • 树莓派4B
  • 电源
  • 摄像头
  • 读卡器
  • 屏幕(这个可以用远程代替)

软件工具准备:

  • Win32DiskImager
  • 镜像包

环境

  • opencv4.2.0
  • python3.7.3

【硬件配置】

  • 树莓派:相比上一代树莓派,树莓派4B在性能各方面有了很大的提升,强烈推荐,本文采用树莓派4B2G版。
  • 摄像头:本文采用某宝购买的树莓派非原装摄像头,20多元,原装摄像头太贵了,不推荐购买,土豪随意。
  • 屏幕:分辨率1024*600,可触屏

在这里插入图片描述

一、烧录镜像和环境配置

镜像烧录传送门:树莓派4b之镜像烧录(手把手完整版)

这里采用的是opencv4.2.0,其安装方式有两种:

1、采用已经安装好opencv的镜像进行烧录

  • 镜像过几天打包后分享出来

2、自己进行安装或编译安装

二、代码详解

1、基础知识

  • 以下代码是基于Haar+Cascade分类器实现人脸识别

相关课程请参看慕课课程:OpenCV+Tensorflowr入门人工智能图像处理
可在B站上搜寻观看,也可通过百度网盘下载后观看(包括源码)

下载链接:https://pan.baidu.com/s/1ZZgXih-4AsQOrbHVW74k5Q
提取码:xwlp

相关理论基础可观看章节:

相关笔记请查看简书:犬夜叉写作业

对于初学者,建议抽空把整个课程看一下,能有所收获

2、相关代码及其详细注释

'''
Haar Cascade Face detection with OpenCV  
    Based on tutorial by pythonprogramming.net
    Visit original post: https://pythonprogramming.net/haar-cascade-face-eye-detection-python-opencv-tutorial/  
Adapted by Marcelo Rovai - MJRoBot.org @ 7Feb2018 
'''

import numpy as np
import cv2
#导入opencv内部已经训练好的人脸模型
faceCascade = cv2.CascadeClassifier('Cascades/haarcascade_frontalface_default.xml')
#打开摄像头,并设置窗口大小
cap = cv2.VideoCapture(0)
cap.set(3,640) # set Width
cap.set(4,480) # set Height

#进行人脸识别
while True:
    ret, img = cap.read()   #读取摄像头采集到的图片
    #img = cv2.flip(img, -1)   #将摄像头180旋转,摄像头倒放的时候需要
    gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)  #将读取的图片转换为灰度图
    faces = faceCascade.detectMultiScale(
        gray,
        
        scaleFactor=1.2,
        minNeighbors=5
        ,     
        minSize=(20, 20)
    )   #采用Haar+Cascade分类器进行脸部识别

    for (x,y,w,h) in faces:    #将识别到的人脸用蓝色框框出来,x:横坐标;y纵坐标;w:宽度;h:高度(即(x,y):表示画蓝色框的起点;w,h表示蓝色框的长和宽)
        cv2.rectangle(img,(x,y),(x+w,y+h),(255,0,0),2)
        roi_gray = gray[y:y+h, x:x+w]
        roi_color = img[y:y+h, x:x+w]
       
    cv2.imshow('video',img) #显示到屏幕上
    k = cv2.waitKey(30) & 0xff
    if k == 27: # 按'ESC'退出摄像头
        break

cap.release()   #释放摄像头
cv2.destroyAllWindows()   #关闭窗口

三、代码部署和运行

将以上代码写入成文件,命名为face.py
我已经写好了,可以在这里下载:

链接:https://pan.baidu.com/s/1AEdGP2svw7B-mBPVNM1rGQ
提取码:h96w

可以先用电脑下载下来,再远程拷贝进树莓派里面

里面的haarcascade_frontalface_default.xml也要下载下来

进入树莓派/home/pi/Downloads,这个目录可以随意,看你想把程序放在哪里了

cd /home/pi/Downloads

face.pyhaarcascade_frontalface_default.xml同时拷贝进去,这样就部署完成了

在这里插入图片描述

输入以下代码运行程序:

#要进入文件所在位置,才能找到文件
cd /home/pi/Downloads  
#运行程序
python3 face.py

运行成功!!!

在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

树莓派4b之初学者入门人脸识别(手把手完整版) 的相关文章

  • OpenCV 中更新窗口的 waitKey() 的替代方法

    到目前为止我见过的所有示例和书籍都建议使用 waitKey 1 来强制重新绘制 OpenCV 窗口 这看起来很奇怪而且太老套了 不必要的时候为什么还要等待 1 毫秒呢 还有其他选择吗 我尝试了 cv updateWindow 但它似乎需要
  • 如何使用 python cv2 api 将 xy 点格式化为 unactorPoints?

    我在格式化要传递给 unactorPoints 的 x y 点列表时遇到问题 opencv 2 4 1 该错误消息是 C 特定的 并抱怨点数组不是 CV 32FC2 类型 我不应该能够传入 Nx2 numpy 数组吗 import cv2
  • 从一个 Mat 复制到另一个 Mat 仅接近黑色像素

    I have Mat difference其中有一些黑色像素 或者几乎是黑色像素 gt 如果发生地震 建筑物会移动等 并且Mat current它由具有自然色彩的真实图像组成 我想替换中的像素Mat current这些黑色像素Mat dif
  • 在 python + openCV 中使用网络摄像头的问题

    我正在使用以下代码使用 openCV python 访问我的网络摄像头 import cv cv NamedWindow webcam feed cv CV WINDOW AUTOSIZE cam cv CaptureFromCAM 1 然
  • 构建 OpenCV 时出错 :: MonitorFromRect 未在此范围内声明

    我试图建立OpenCV version 2 4 8与它一起使用CodeBlocks and MinGw 我按照以下指示进行操作here http kevinhughes ca tutorials opencv install on wind
  • 如何使用 OpenCV 从图像中获取调色板 [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我想提取图像的调色板 类似于此 来自 我需要它来提取特定的颜色 如黄色 绿色和棕色 并显示该颜色覆盖的区域的百分比 另外 我可以添加更
  • 如何获得垂直线穿过的完整内轴线?

    我有一个图像 我想获取穿过其中轴的像素 我尝试使用骨架化 and 中轴方法来获取它们 但这两种方法都返回比相应对象短的一维线 这是带有示例图像的代码 gt gt gt import skimage filter gt gt gt impor
  • OpenCV 完美识别物体

    我有一个应用程序 我想一次跟踪 2 个在图片中相当小的对象 该应用程序应该在 Android 和 iPhone 上运行 因此算法应该是高效的 对于我的客户来说 如果我们提供一些模式以及附加到要跟踪的对象的软件 以获得易于识别的目标 那就完全
  • 在 Android 中使用 OpenCV 查找图像匹配

    我正在尝试构建一个 Android 应用程序 该应用程序可以比较设备相机拍摄的照片 以在一组图像中找到匹配项 我已经在 Android Studio 上配置了 OpenCV 但仅此而已 有人可以通过链接到资源或建议教程来提供帮助吗 Open
  • 如何在 opencv 3.0 Beta 中从文件读取 UMat?

    我想用UMat所以我的代码可以使用 OpenCL OpenCV 3 0 0 Beta 在 GPU 和 CPU 上运行 但我找不到将图像文件读入的方法UMat或转换一个Mat to UMat 如何将图像读入UMat 样品用于Mat to UM
  • Haar训练时正样本和负样本使用多少张图片?

    我已经阅读了大量有关 Haar 训练的内容 但我不清楚应该为正样本集和负样本集使用多少图像 我看到建议使用很多图像 有些人推荐数千张 我也不清楚正负样本图像的数量是否应该相同 这是关于 Haar 训练的最佳教程 你试过这个吗 http no
  • 使用 OpenCV VideoWriter 将 RTSP 流存储为视频文件

    我正在使用 OpenCV 开发一个 Python 模块 该模块连接到 RTSP 流以对视频执行一些预处理 主要是降低 fps 和分辨率 然后将其存储在文件系统中 但是 即使在尝试了几种编解码器 寻找类似的开发之后 我总是得到一个空的视频 我
  • OpenCV 旋转图像而不裁剪澄清

    我想扩展这个主题 参考用户 Lars Schillingmann 给出的这个 SO 问题和接受的答案 在 C 中的 OpenCV 中旋转图像而不裁剪 https stackoverflow com questions 22041699 ro
  • Android for OpenCV - 打开跟踪文件时出错,UnsatisfiedLinkError

    我对 Android 开发和 OpenCV 都是新手 我从 Android 下载了 OpenCV 库http sourceforge net projects opencvlibrary files opencv android http
  • Android API人脸检测与OpenCV/JavaCV人脸检测

    我在 Android 设备上使用了本地 Android 人脸检测 但它似乎很慢 而且我不太确定其可靠性 我还使用了 OpenCV 的人脸检测 但仅限于 PC 而不是 Android 设备 对于 Android 我猜我必须使用 JavaCV
  • 在OpenCV中将YUV转换为BGR或RGB

    我有一个电视采集卡 其输入内容为 YUV 格式 我在这里看到了与此问题类似的其他帖子 并尝试尝试所述的所有可能的方法 但它们都没有提供清晰的图像 目前最好的结果是 OpenCVcvCvtColor scr dst CV YUV2BGR 函数
  • python openCV 中的人口普查变换

    我开始在一个与立体视觉相关的项目中使用 openCV 和 python 我找到了关于使用 openCV 在 C 中进行人口普查转换的文档页面 link http docs opencv org 3 1 0 d2 d7f namespacec
  • 从凸点获取角点

    我编写了算法来提取图像中显示的点 它们形成凸形 我知道它们的顺序 如何从这些点中提取角点 顶部 3 个和底部 3 个 我正在使用opencv 如果你已经有了物体的凸包 并且该包包含角点 那么你需要做的就是简化包直到它只有 6 个点 有很多方
  • OpenCV:将垫子除以标量的最简单方法是什么

    我认为标题中已经包含了很多内容 显然我可以迭代和划分 但我认为有一种内置的方法 我看见cvConvertScale但这不适用于类型cv Mat 我知道标量乘法的缩放运算 cv Mat M float alpha cv Mat Result
  • Python 中的 Lanczos 插值与 2D 图像

    我尝试重新缩放 2D 图像 灰度 图像大小为 256x256 所需输出为 224x224 像素值范围从 0 到 1300 我尝试了两种使用 Lanczos 插值来重新调整它们的方法 首先使用PIL图像 import numpy as np

随机推荐

  • 比kettle好用的开源etl_ETL常用的三种工具

    ETL 是英文 Extract Transform Load 的缩写 用来描述将数据从来源端经过抽取 extract 转换 transform 加载 load 至目的端的过程 数据仓库结构 通俗的说法就是从数据源抽取数据出来 进行清洗加工转
  • 性能指标分析

    一 用户事务分析 用户事务分析是站在用户角度进行的基础性能分析 1 Transation Sunmmary 事务综述 对事务进行综合分析是性能分析的第一步 通过分析测试时间内用户事务的成功与失败情况 可以直接判断出系统是否运行正常 2 Av
  • Python序列以及切片操作

    1 序列 序列是一个用于存储多个值的连续空间 每个值都对应一个整数编号 称为索引 序列结构主要有列表 元组 集合 字典和字符串 2 索引 正向递增索引 取值范围 0 N 1 反向递减索引 取值范围 1 N 下面我们用索引遍历一下字符串序列
  • 头歌课堂练习5:进程的同步与互斥

    第一关 多线程编程 创建多线程的函数pthread create原型如下 pthread create pthread t tidp const pthread attr t attr void start rtn void void ar
  • Python编写一个函数cacluate, 可以接收任意多个数,返回的是一个元组.元组的第一个值为所有参数的平均值, 第二个值是大于平均值的所有数

    编写一个函数cacluate 可以接收任意多个数 返回的是一个元组 元组的第一个值为所有参数的平均值 第二个值是大于平均值的所有数 详细代码见链接 共同学习 加油 文末有知识点分析 文章所使用的知识点if lese语句 if 条件1 pri
  • js+mysql实现论坛回复功能_php实现简单BBS论坛及回复

    实例简介 该资源主要参考http blog csdn net eastmount article details 44241583文章 讲述了如何通过PHP实现论坛搭建简单的效果 同时包括IFrame实现局部布局 后台数据库通过SAE搭建
  • 2022年 软件工程专业 计算机组成原理 运算器实验报告

    年级 班号 组号 学号 专业 软件工程 日期 2022 年 5 月 11日 姓名 预判你的代码 实验名称 运算器 实验室 实验 目的 或 要求 1 了解运算器的组成结构 2 掌握运算器的工作原理 3 熟悉运算器的设计方法 4 掌握运算器的控
  • AndroidManifest.xml文件综合详解

    http www cnblogs com hnrainll archive 2011 10 26 2225710 html 一 重要性AndroidManifest xml是Android应用程序中最重要的文件之一 它是Android程序的
  • Zend Studio 12 安装及破解

    1 安装 1 1 下载最新版本Zend Studio 12 0 0 http downloads zend com studio eclipse 12 0 0 ZendStudio 12 0 0 win32 win32 x86 msi 12
  • Android10填坑适配指南,实际经验代码,拒绝翻译

    Android10填坑适配指南 包含实际经验代码 绝不照搬翻译文档 1 Region Op相关异常 java lang IllegalArgumentException Invalid Region Op only INTERSECT an
  • 2021年南京天印中学高考成绩查询,2021年南京高中录取分数线是多少及高中排名榜...

    2020年南京的高中录取分数线都已经公布 以下是小编给大家整理的汇总信息 仅供参考 一 2020年南京高中录取分数线是多少 一 科技特长生 学科特长生 科技特长生和学科特长生投档控制线均为548分 二 普通高中指标生 原市区普通高中指标生录
  • STM32——超声波模块

    模块介绍 超声波模块一般使用的都是HC SR04来进行测距 1 产品特点 HC SR04 超声波测距模块可提供 2cm 400cm 的非接触式距离感测功能 测 距精度可达高到的非接触式距离感测功能 测距精度可达高到 3mm 模块包括超声波发
  • 期货用期权对冲(期货用期权对冲吗)

    怎么用期权 option 做对冲 hedge 在期权交易市场中 对冲期权风险可以通过交易不同的合约方向 使用组合策略对自己合约盈利或者合约的亏损进行一个风险对冲 这样可以降低期权交易市场中的风险 在期权交易市场中 投资者一般也会将期权用作对
  • Java 静态变量,静态方法,静态常量简介说明

    转自 Java 静态变量 静态方法 静态常量简介说明 下文笔者将着重讲述静态的相关说明 如下所示 实现思路 当我们在方法 变量 常量前面加上static关键字 则可认为其是一个静态的对象 静态方法注意事项 静态方法不可以使用this关键字
  • 去AV片马赛克,开发者被抓了

    来源丨程序员软件库 怎么去除图片或者视频上的马赛克 自从马赛克这玩意被弄出来后 让大家悲喜交加 你想在社交软件上发一些图片或者视频 有部分比较隐私的东西 那就需要使用马赛克技术遮挡下 保护下自己隐私或者别人隐私是非常好的 比如 新闻在拍摄报
  • python爬取美女图片

    需求 最近对python爬虫感兴趣 于是也依葫芦画瓢试着用爬虫爬取之前喜欢的网站上的美女图片 网站 http www mm131 com xinggan 其中每一套图都是一张一个页面 存一套图如果是手动得点翻几十个页面 但现在用爬虫的话 就
  • 用python算24点及原理详解

    1 描述 给出4个正整数 使用加 减 乘 除4种运算以及括号把4个数连接起来得到一个结果等于24的表达式 注 这里加 减 乘 除以及括号的运算结果和运算优先级跟平常定义一致 例如 对于5 5 5 1 可知 5 5 1 5 24 又如 对于
  • 连接Nacos的服务程序快速无限打日志longPolling、ClientWorker

    问题 一个微服务环境里很多服务启动以后疯狂打日志 日志是从nacos更新配置 日志 星号脱敏ip 端口 com alibaba nacos client Worker longPolling fixed 10 public ClientWo
  • [极客大挑战 2019]LoveSQL

    考点 常规的sql注入 1 万能密码测试 2 解不了码 没用 3 但是可以注入 测试回显几个字段名 慢慢试 4 爆数据库名和用户名 5 爆库名 6 爆表名 1 union select 1 2 group concat table name
  • 树莓派4b之初学者入门人脸识别(手把手完整版)

    目录 前言 硬件配置 一 烧录镜像和环境配置 二 代码详解 1 基础知识 2 相关代码及其详细注释 三 代码部署和运行 前言 树莓派的性能日益强大 树莓派4b相比上一代的能有了很大的提升 采用了博通最新的BCM4908 64bit处理器 内