ESP32-CAM+QT实现摄像头画面在局域网设备之间的展示和人脸识别操作

欢迎入群共同学习交流
时间记录:2023/12/3

一、软件和硬件介绍

软件:
1 Arduino,官网下载地址:Arduino-1.8.18
2 QT,这里不进行讲解QT的安装方法和版本,后续会写几个博客介绍QT下载和Qt For Android的配置,在那里会讲解需要的版本和下载地址
3 ESP32板卡离线支持包,点灯科技的一个网址,速度比较快,ESP32 SDK,里面同样有板卡的安装步骤,推荐安装2.0.9版本
硬件:
1 安信可科技的ESP32-CAM摄像头开发板,淘宝上便可以买到,记得选带摄像头的开发板
ESP32-CAM开发板
2 USB转TTL
本文章中使用的相关软件可私信本人来领取

二、Arduino的下载安装和配置ESP32支持包

1.双击下载的Arduino.exe文件,弹出界面点击I Agree同意协议
协议界面
2.选择要安装的东西,从上往下依次是,Arduino软件、USB驱动、创建开始菜单快捷方式、创建桌面快捷方式、将.ino文件和软件关联,然后点击Next进行下一步安装,这里建议全选
选择的操作
3.Browse…处点击选择一下要将软件安装在哪个位置,然后点击Install等待软件安装即可,这里建议选择一个C盘之外的地方安装
安装路径
4.安装完毕后点击close即可,然后在桌面上双击Arduino快捷方式打开软件,新安装的界面可以看到,工具-开发板位置这里仅有Arduino自带的开发板支持包,我们想要使用ESP32CAM就需要下载对应的支持包
开发板界面
5.打开文件-首选项界面,在附加开发板管理器网址的输入框输入网址https://arduino.me/packages/esp32.json,然后点击好保存
添加开发板网址
6.双击下载的esp32支持包进行安装即可,安装完成后重启Arduino软件,然后在工具-开发板处就可以看到新安装的esp32支持包
ESP32开发包

三、代码修改和摄像头数据查看

1.打开Arduino软件,选择工具-开发板-ESP32 Arduino-AI Thinker ESP32-CAM来选择对应的开发板
开发板选择
2.选择文件-示例-ESP32-Camera-CameraWebServer来打开对应的官方摄像头示例文件
例程选择
3.在选择摄像头模式的这块代码里将第一个注释掉,然后将CAMERA_MODEL_AT_THINKER宏的注释取消掉
摄像头模式选择
4.WIFI凭证的这块代码,修改xxxxxx为你自己对应的WIFI名称和密码
设置WIFI账号密码
5.USB-TTL模块与ESP32CMA模块进行连接

USB-TTLESP32-CAM
GNDGND
5V5V
TXDUOR
RXDUOT

然后再找一根杜邦线将ESP32CAM的IO0口和GND口连接,将USB-TTL的USB口插到电脑上
6.Arduino软件中选择工具-端口处选择一下对应的端口,然后点击上传按钮来向ESP32CAM中下载代码,代码上传是先进行代码编译然后才会上传的,在编译的时候按一下ESP32CAM模块上的RST按键
端口选择
7.成功下载后输出结果如下
成功下载界面
8.然后断开ESP32CAM模块上的IO0口与GND之间的连线,打开串口监视器,手机开个热点设置为指定的账号名和密码或者上边设置的WIFI账号密码是路由器的WIFI账号和密码,然后按下ESP32CAM模块的RST按键,等待模块连接WIFI
9.WIFI正常连接后,在串口监视器中会输出一个网址,和模块连接同一个WIFI的设备通过此网站便可以查看实时画面
IP网址
10.打开网站界面便是这样的,点击Start Stream按钮然后便会显示实时的摄像头画面
网站界面
11.点击画面上的Save按钮便可以保存一张现在画面的照片,esp32cam获取画面的弊端同时只能一个设备访问stream视频流
摄像头画面

四、QT开发软件显示实时画面

1.通过网站我在开发者工具中查看了一下js代码,发现了它的拍照方法,访问这个接口API就会响应一张实时的图片画面
拍照方法
2.通过QT向这个接口发送请求然后将照片显示在QLabel组件上便可以实现画面的获取,我的QT代码放上来供大家参考和扩展
2.1 头文件(.h)

#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>
#include <QNetworkAccessManager>
#include <QNetworkRequest>
#include <QNetworkReply>
#include <QUrl>
#include <QPixmap>
#include <QTimer>

QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACE

class Widget : public QWidget
{
    Q_OBJECT

public:
    Widget(QWidget *parent = nullptr);
    ~Widget();

private:
    Ui::Widget *ui;
    QNetworkAccessManager *manager;
    QNetworkRequest request;
    QNetworkReply *reply;
    QTimer *timer;
    int displayOK;

private slots:
    void onTimeout();
};
#endif // WIDGET_H

2.2 源文件(.cpp)

#include "widget.h"
#include "ui_widget.h"

Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
    , displayOK(0)
{
    ui->setupUi(this);

    manager = new QNetworkAccessManager(this);//创建网络管理对象

    request.setUrl(QUrl("http://192.168.125.224/capture?_cb=8888"));//设置请求地址

    timer = new QTimer(this);
    connect(timer,&QTimer::timeout,
            this,&Widget::onTimeout);
    timer->start(100);
}

Widget::~Widget()
{
    delete ui;
}

void Widget::onTimeout()
{
    if(displayOK == 0){
        reply = manager->get(request);
        connect(reply,&QNetworkReply::finished,[=](){
            QByteArray imageData = reply->readAll();
            QPixmap pixmap;
            pixmap.loadFromData(imageData);
            ui->label->setPixmap(pixmap.scaled(400,240));
            displayOK=0;
            reply->deleteLater();
        });
    }
    displayOK=1;
}

3.有需要QT完整代码的可私信本人索要
4.放一下QT开发的软件获取的画面,画质不算太好但是没有卡顿还算是可以的了

获取的摄像头画面

5.如果QT搭建的有QT For Android环境,直接换套件进行编译就可以在手机上使用了,选择使用QT就是因为它的跨平台使用效果好,搭建一下环境就能多平台使用了,比较方便

五、微信小程序抓取实时画面

使用一个image标签就可以直接展示了,src地址设置为http://IP地址:81/stream即可
最后啰嗦一下,本人属于单片机开发行业的一名小白,欢迎各位大佬联系一块学习交流
新增内容

六、ESP32CAM例程的人脸识别

6.1 搭建环境与上述过程一致,修改地方为三处
(1)esp32板卡离线支持包由2.0.9版本降为1.0.6版本,需要先将2.0.9版本的删除
(2)新的CameraWebServer例程的app_httpd.cpp文件中286-289行的free函数改为dl_lib_free函数
286-289
(3)新的CameraWebServer例程的app_httpd.cpp文件中385-388行的free函数改为dl_lib_free函数
385-388
6.2 修改完毕后即可上传代码,然后打开浏览器网址测试
功能按键介绍
6.3 打开开始视频和人脸检测按钮后,便会自动去进行检测,检测到人脸后便会使用黄色的框将其框起来
人脸检测
6.4 将人脸识别按钮也打开后便会进行人脸识别,识别到非人脸库的人脸红色框框起来,并且显示一段汉字提示,串口也会输出这一段字
人脸识别
6.5 注册人脸按钮点击后,会进行人脸注册,注册会识别五次然后保存一个ID,下一次人脸识别时使用,注册时显示的提示前面为人脸ID,后面为识别次数,5次后保存ID,提高检测准确率
人脸注册
6.6 成功注册人脸后,下一次人脸识别便会显示出注册人脸的ID,成功进行识别
人脸识别
6.7 然后这些操作相应的在串口也会有输出,可以修改这些地方输出自己想要的数据
串口输出

  • 25
    点赞
  • 59
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
### 回答1: ESP32-CAM OV2640的原理图是该开发板的电路图设计。该开发板集成了ESP32芯片及OV2640图像传感器模块,同时还添加了USB转串口芯片、电源管理芯片等周边硬件模块,提供了丰富的接口。原理图中主要分为以下几个部分: 1.ESP32芯片区:这部分主要包括ESP32ESP32相关的电路,例如外部晶振、电源、信号线等。ESP32是开发板的核心,集成了Wi-Fi、蓝牙等通信模块,可以实现与电脑、手机等设备的通信。 2.OV2640图像传感器区:这部分主要包括OV2640传感器和相关的电路,例如可变电阻器、晶振等。OV2640是一款常用的图像传感器,可以捕捉高分辨率图像,并将数据传输到ESP32芯片中进行处理。 3.电源管理区:这部分主要包括电源管理电路和芯片,例如稳压芯片、滤波器等。电源管理电路可以提供稳定的电源,确保ESP32和OV2640能够正常工作。 4.USB转串口区:这部分主要包括USB转串口芯片和相关电路,例如电容、晶振等。USB转串口芯片可以实现开发板与电脑的连接,并通过串口进行数据传输。 除了以上四个部分,原理图中还包括了一些外部接口,例如MicroSD卡插座、LED指示灯、按键等。这些接口可以方便开发者进行开发和调试。通过ESP32-CAM OV2640原理图的了解,开发者可以更好地理解开发板的电路设计,为后续的开发工作提供有力的支持。 ### 回答2: ESP32-CAM OV2640原理图是一种电路图,它描述了ESP32-CAM开发板与OV2640摄像头模块之间的互连。ESP32-CAM开发板采用ESP32芯片,而OV2640摄像头模块具有200W像素的高清图像能力。 ESP32-CAM开发板包括主处理器、SD卡槽、WiFi天线和其他外围器件。OV2640摄像头模块包括传感器和图像处理模块,并且具有I/O接口,使用了标准SMBus(I2C)协议与主处理器通信。 ESP32-CAM OV2640原理图包括主处理器控制引脚、传感器接口引脚、SD卡接口引脚、WiFi天线接口引脚等,以及连接它们的线路。其中包括电源连接、传输数据线路和信号引脚线路。 ESP32-CAM OV2640原理图的设计目标是使ESP32-CAM开发板可以控制OV2640摄像头模块,从而实现高清拍摄和数据传输功能。可通过此电路图进行特定版本的开发或制造,实现客户指定配置下的产品。 总之,ESP32-CAM OV2640原理图是描述ESP32-CAM开发板和OV2640摄像头模块之间连接的电路图,是将两部分模块融合在一起,实现高清拍摄及数据传输功能的重要工具。 ### 回答3: ESP32-CAM OV2640是一款带有摄像头的Wi-Fi模块,它使用了OV2640图像传感器和ESP32微控制器,可直接进行图像采集和传输。 这个模块的原理图详细描述了ESP32和OV2640的连接方式和电路设计,同时也包括一些其他组件,例如电源芯片和USB转串口芯片等。每个元件的功能都明确说明了,帮助开发者理解和进行二次开发。 首先,ESP32-CAM OV2640模块的供电方式是通过USB接口,然后通过TPS62172芯片提供3.3V的电源。OV2640图像传感器、液晶显示屏和SD卡等设备则使用2.8V的电源。 其次,ESP32芯片通过Pin32和Pin33与OV2640进行I2C总线通信,用于控制和读取传感器的各种设置和状态,例如分辨率、帧率、曝光时间等。 此外,OV2640传感器还通过8位数据总线与ESP32芯片连接,用于传输图像数据。在模块的电路图中,可以看到ESP32芯片的GPIO5-GPIO18通过一系列数据总线缆连接到OV2640传感器的SDA、SDO、SCL、PCLK等引脚,实现数据传输。 ESP32-CAM OV2640模块还附带有一些其他组件,例如USB转串口芯片、flash存储器等,可用于程序调试和数据存储。在原理图中,这些元件也都明确标注,并与ESP32和OV2640等元件相互连接。 总之,ESP32-CAM OV2640模块的原理图详细描述了该模块的电路组成和各元件之间的连接方式,开发者可以根据这份原理图做出合适的设计和改进,在更多的应用场景中发挥该模块的优势。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值