将esp32-s3-eye做为USB网络摄像头(UVC设备)

官方网址:usb_webcam

  • 支持UVC同步、批量传输模型
  • 只支持MJPEG传输格式
  • 支持板上LCD动画esp32-s3-eyeIDF v5.0或更高版本)

在这里插入图片描述

硬件要求

官方默认的USB WebCam config就是乐鑫带摄像头OV2604esp32-s3-eye,其他的开发板可以参考官方网站进行配置。

摄像头要求

  1. 参考esp32-camera查看摄像头是否支持JPEG压缩;
  2. 使用idf.py menuconfigUSB WebCam config配置帧分辨率、帧速率和图像质量;
  3. 通过USB WebCam config -> UVC transfer mode,用户可以切换到Bulk模式来获得差不多Isochronous两倍的吞吐量。
    在这里插入图片描述

编译和烧录

idf.py set-target esp32s3
idf.py build flash moniotr

官方的示例输出

I (0) cpu_start: Starting scheduler on APP CPU.
I (533) spiram: Reserving pool of 32K of internal memory for DMA/internal allocations
I (534) usb_webcam: Selected Camera Board ESP-S3-EYE
I (534) usb_webcam: Format List
I (534) usb_webcam:     Format(1) = MJPEG
I (534) usb_webcam: Frame List
I (535) usb_webcam:     Frame(1) = 1280 * 720 @15fps, Quality = 14
I (535) usb_webcam:     Frame(2) = 640 * 480 @15fps, Quality = 14
I (535) usb_webcam:     Frame(3) = 480 * 320 @30fps, Quality = 10
I (869) usb_webcam: Mount
I (2099) usb_webcam: Suspend
I (9343) usb_webcam: bFrameIndex: 1
I (9343) usb_webcam: dwFrameInterval: 666666
I (9343) s3 ll_cam: DMA Channel=4
I (9344) cam_hal: cam init ok
I (9344) sccb: pin_sda 4 pin_scl 5
I (9344) sccb: sccb_i2c_port=1
I (9354) camera: Detected camera at address=0x30
I (9357) camera: Detected OV2640 camera
I (9357) camera: Camera PID=0x26 VER=0x42 MIDL=0x7f MIDH=0xa2
I (9434) cam_hal: buffer_size: 16384, half_buffer_size: 1024, node_buffer_size: 1024, node_cnt: 16, total_cnt: 180
I (9435) cam_hal: Allocating 184320 Byte frame buffer in PSRAM
I (9435) cam_hal: Allocating 184320 Byte frame buffer in PSRAM
I (9436) cam_hal: cam config ok
I (9436) ov2640: Set PLL: clk_2x: 0, clk_div: 0, pclk_auto: 0, pclk_div: 12

实际上烧录结果如下,应该是烧录后USB口应该被占用了所以没有打印输出。
在这里插入图片描述

电脑端查看摄像头

现在电脑就可以直接访问摄像头了,使用python运行下面代码,在打开摄像头的时候LCD上的动画的眼睛会一直眨巴眨巴。

import cv2

# 打开摄像头,参数0表示第一个摄像头,如果有多个摄像头可以尝试1, 2, 3等
cap = cv2.VideoCapture(0)

if not cap.isOpened():
    print("无法打开摄像头")
    exit()

while True:
    # 读取摄像头的一帧
    ret, frame = cap.read()
    
    if not ret:
        print("无法接收帧 (stream end?). Exiting ...")
        break
    
    # 显示这一帧
    cv2.imshow('Image', frame)
    
    # 按下'q'键退出循环
    if cv2.waitKey(1) == ord('q'):
        break

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

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/874188.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

多环境jdk安装,CentOS,统信UOS,Ubuntu,KylinOS,windows

文章目录 1.CentOS1.1yum安装1.2压缩包安装 本文档只是为了留档方便以后工作运维,或者给同事分享文档内容比较简陋命令也不是特别全,不适合小白观看,如有不懂可以私信,上班期间都是在得 1.CentOS 1.1yum安装 yum install -y jav…

Linux 安装神州通用数据库 ShenTong7.0.8_342.92_linux64

Linux 安装神州通用数据库 ShenTong7.0.8_342.92_linux64 1、准备工作2、安装数据库3、启停数据库4、后续步骤 💖The Begin💖点点关注,收藏不迷路💖 在Linux环境下安装神州通用数据库(ShenTong)是一个相对直…

家庭用超声波清洗机哪个品牌好用?好用的眼镜清洗机推荐

在我们的日常生活中,像眼镜、项链和耳环这些频繁使用的个人物品,经常面临灰尘积聚和细缝中难以触及的污渍问题。超声波清洗机凭借其深入微细缝隙的清洁能力,成为了解决这一难题的理想工具,确保了这些珍贵小物的彻底清新。不过现在…

云手机能否全面替代传统手机?深入探讨云手机的优缺点

随着云计算技术的飞速发展,云手机作为一种新型的手机形态,已经逐渐进入人们的视野。越来越多的人开始使用云手机来运行各类应用,尤其是在群控、海外业务等场景中,云手机展现出明显的便利性和优势。那么,云手机究竟有什…

【困难】 猿人学web第一届 第18题 jsvmp 洞察先机

文章目录 数据接口分析还原加密参数插桩调试分析日志插桩补充 python 代码 数据接口分析 数据接口 https://match.yuanrenxue.cn/match/18data 请求参数 {page: 页码, t: 时间戳, v: 加密值} 请求第一页不需要携带 t, v 参数 cookie 只需要携带 sessionid 只要 还原加密字段…

《PneumoLLM:利用大型语言模型的力量进行尘肺病诊断》|文献速递--基于深度学习的医学影像病灶分割

Title 题目 PneumoLLM: Harnessing the power of large language model for pneumoconiosis diagnosis 《PneumoLLM:利用大型语言模型的力量进行尘肺病诊断》 01 文献速递介绍 在计算机辅助诊断领域,对医学数据的处理和分析能力至关重要。这不仅有助…

在Application中全局获取context

首先自定义一个application,继承Application,并在AndroidManifest.xml文件中配置它。 class TvApplication : Application() {companion object {Volatilevar context: Application? nullprivate setfun getContext(): Context {return context ?: t…

【机器学习】从零开始理解深度学习——揭开神经网络的神秘面纱

1. 引言 随着技术的飞速发展,人工智能(AI)已从学术研究的实验室走向现实应用的舞台,成为推动现代社会变革的核心动力之一。而在这一进程中,深度学习(Deep Learning)因其在大规模数据处理和复杂问题求解中的卓越表现,迅速崛起为人工智能的最前沿技术。深度学习的核心是…

2024年最佳本地营销策略的14个专家意见

本地营销对任何企业都很重要——无论您是市中心的夫妻店,还是大型全国连锁店。您都希望被寻找您产品或服务的人看到并找到,而他们通常是在本地搜索这些内容。事实上,几乎一半的Google搜索都有本地意图。 那么,今年哪些是最好的本…

金智维K-RPA基本介绍

一、K-RPA基本组成 K-RPA软件机器人管理系统基于“RPAX”数字化技术打造,其核心系统由管理中心(Server)、设计器(Control)、机器人(Robot/Agent)三大子系统组成,各子系统协同工作,易于构建协同式环境。 管理中心(Server&#xff…

echarts 5.3.2 折线图 tooltip设置trigger为axis无效

在使用echarts5.3.2过程中,发生一个不应该发生的bug,希望效果如下 现实中如下 代码中设置了tooltip: {trigger: ‘axis’}不生效啊。查阅文档,应该是这样设置的啊,可是为什么无效呢。改成tooltip: {trigger: ‘item’}虽能显示弹…

09-03 周二 ansible部署与使用指南

09-03 周二 ansible部署与使用指南 时间版本修改人描述2024年9月3日10:08:58V0.1宋全恒新建文档,2024年9月4日13:57:25v0.2宋全恒调整结构,添加ansible-playbook和ansible-inventory 简介 首先要找一个跳板机,来确保所有的机器都可以访问。然…

C#自定义控件的放置与拖动

1、自定义控件 using System; using System.Collections.Generic; using System.ComponentModel; using System.Drawing; using System.Drawing.Drawing2D; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms;namespace PartA…

动态内存管理【存稿】

动态内存管理 1.为什么有动态内存分配? 我们所知道的内存开辟 int a 3; //在栈空间上开辟4个字节 char b a; //在栈空间上开辟1个字节 int arr[30] {0};//在栈空间上开辟120个字节的连续空间这种内存开辟的特点: 空间开辟的大小是固定的 数组在申…

简单的springboot log4j2日志配置

简单的springboot log4j2日志配置 1.简介 Log4j2 是 Apache Software Foundation 开发的一个日志记录工具,它是 Log4j 的后续版本,并且在多个方面进行了改进。以下是 Log4j2 的一些关键特性: 性能提升:Log4j2 在设计上做了很多优…

航空维修培训中的虚拟现实辅助工程技术应用

飞机维护对航空旅行安全起着至关重要的作用,据美国劳工统计局的一份报告显示,航空业每年需要招聘12,000名的飞机机械师才能满足行业需求。但由于传统实践培训的限制和航空技术的飞速发展,该行业正面临着专业技术人员短缺的问题。虚拟现实辅助…

智能新纪元:GPT-Next引领的AI革命及其跨领域应用

GPT-Next:性能的百倍提升 在当今这个科技日新月异的时代,人工智能(AI)无疑是最具活力和变革性的领域之一。最近,OpenAI在KDDI峰会上宣布了一项激动人心的消息:他们即将推出名为“GPT-Next”的新一代语言模…

JavaScript - Api学习 Day03 (日期对象、节点操作、两种定时器、本地存储)

文章目录 一、日期对象1.1 实例化1.2 日期对象方法 二、节点操作2.1 父子兄弟节点1. 父节点查找2. 子节点查找3. 兄弟关系查找 2.2 增删节点1. 创建节点 - createElement2. 添加节点2.1 appendChild() 方法2.2 insertBefore() 方法2.3. 克隆节点 - cloneNode 3. 删除节点3.1 re…

第11章 32位x86处理器编程架构

第11章 32位x86处理器编程架构 IA-32(INTEL Architecture, 32-bit):INTEL 32位处理器架构简称IA-3,以8086处理器为基础发展起来的。该章重点介绍了IA-32处理器的工作方式和相关技术。 IA-32架构的基本执行环境 寄存器的扩展 32位处理器通用寄存器&am…

Python专项进阶——初步认识Numpy库

NumPy是Numeric Python的缩写,一个优秀的开源科学计算库。 个人理解,NumPy是一个主要围绕着数值数组对象(ndarray)(或叫做矩阵)进行各种操作的对象、函数集合。提供很多实用的数学函数,涵盖线性…