ESP32-Cam学习(1)——拍摄第一张照片

news2024/11/24 2:19:26

1.开发板介绍

使用的ESP32-Cam实物图为:

在某宝可以轻易买到。它分为主板,和底板。底板的主要功能是供电、程序下载等等。主板才是ESP32芯片的核心。

2.固件烧录

使用摄像头之前,需要给ESP32刷入支持摄像头的固件库,其下载地址为:

 ​​​​​https://doc.itprojects.cn/0006.zhishi.esp32/01.download/micropython/micropython_camera_feeeb5ea3_esp32_idf4_4.binicon-default.png?t=N7T8https://doc.itprojects.cn/0006.zhishi.esp32/01.download/micropython/micropython_camera_feeeb5ea3_esp32_idf4_4.bin

 如果不知道如何烧录固件,可以看:

ESP32学习(1)——环境搭建-CSDN博客icon-default.png?t=N7T8https://blog.csdn.net/guangali/article/details/136120510

3.解决问题

按照步骤,烧录完固件后,会发现Thonny解释器的shell栏一直报错。


Device is busy or does not respond. Your options :
wait until it completes current work;
use Ctrl+C to interrupt current work;
reset the device and try again;
check connection properties;
make sure the device has suitable MicroPython / CircuitPython / fi rmware;
make sure the device is not in bootloader mode .

经过一下午的搜索,找到了解决方法。该底座设计有些问题,只需要用杜邦线将串口、供电口与烧录底座连接即可,避免其他的IO被占用,即可正常使用。连接好实物后,如下图所示


 

4.测试

在shell栏输入

如果不报错,就说明固件烧录成功,可以对其进行开发了。 

5.拍摄照片

拍摄照片的代码为

import camera


# 初始化摄像头
camera.init(0, format=camera.JPEG, fb_location=camera.PSRAM)

# 拍摄一张图片
buf = camera.capture()  # 大小是640x480

# 保存图片到文件
with open("第一张图片.png", "wb") as f:
    f.write(buf)  # buf中的数据就是图片的数据,所以直接写入到文件就行了
    print("拍照已完成,点击Thonny左侧【MicroPython设备】右侧的三,\n然后看到‘刷新’,点击刷新会看到 图片,\n然后右击图片名称,选择下载到电脑的路径即可...")

运行代码后点击:

然后点刷新。

拍摄的照片不支持在线查看,需要将其下载到电脑上才能查看。(鼠标对准图片,右键,即可看到下载提示)

拍到的图片如下所示:

第二次点击运行就会报错。解决办法是把板子的USB数据线拔掉,重新插上即可

 

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

(07)Hive——窗口函数详解

一、 窗口函数知识点 1.1 窗户函数的定义 窗口函数可以拆分为【窗口函数】。窗口函数官网指路: LanguageManual WindowingAndAnalytics - Apache Hive - Apache Software Foundationhttps://cwiki.apache.org/confluence/display/Hive/LanguageManual%20Windowing…

线索化二叉树(先序,中序,后序)+线索化二叉树的遍历【java详解】

目录 线索化二叉树的基本介绍: 举个栗子: 二叉树的中序线索化: 创建HeroNode类,表示节点信息: 编写中序线索化方法代码: 中序线索化遍历代码: 测试代码: 测试结果&#xff1a…

OpenAI发布Sora技术报告深度解读!真的太强了!

😎 作者介绍:我是程序员洲洲,一个热爱写作的非著名程序员。CSDN全栈优质领域创作者、华为云博客社区云享专家、阿里云博客社区专家博主、前后端开发、人工智能研究生。公粽号:洲与AI。 🎈 本文专栏:本文收录…

NodeJS背后的人:Express

NodeJS背后的人:Express 本篇文章,学习记录于:尚硅谷🎢 文章简单学习总结:如有错误 大佬 👉点. 前置知识:需要掌握了解: JavaScript基础语法 、Node.JS环境API 、前端工程\模块化 …

代码随想录算法训练营第53天 | 121.买卖股票的最佳时机 + 122.买卖股票的最佳时机II

今日任务 121. 买卖股票的最佳时机 122.买卖股票的最佳时机II 121.买卖股票的最佳时机 - Easy 题目链接:力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台 给定一个数组 prices ,它的第 i 个元素 prices[i] 表示一支给定股票第…

Rust 语言学习杂谈 (end) (各种工作中遇到的疑难杂症)

1.在运行 “cargo build --release” 的时候,到底发生了什么? 源 (GPT4.0) : 当我们运行 cargo build --release 命令时,实际上在进行一系列复杂的步骤来编译和构建 Rust 项目的发布版本。这个过程大致可以分解为以下几个步骤:…

Java - SPI机制

本文参考:SPI机制 SPI(Service Provider Interface),是JDK内置的一种服务提供发现机制,可以用来启动框架扩展和替换组件,主要是被框架的开发人员使用,比如 java.sql.Driver接口,其他…

【C语言】实现队列

目录 (一)队列 (二)头文件 (三) 功能实现 (1)初始化 (2) 销毁队列 (3) 入队 (4)出队 (5&a…

【论文精读】GPT1

摘要 如何从大量未标注文本中获取词级别的信息有两个主要挑战,使用何种优化目标能有效地学习文本表示,如何有效地将学习到的表示迁移到目标任务。针对这些问题,本文提出一种无监督预训练和有监督微调的组合的半监督方法,具体为&am…

Vue3+Ant-Design-Vue:报错Cannot read properties of null (reading ‘isCE‘)

问题描述 在使用Ant-Design-Vue内置的Table表格组件,实现expand展开行功能时,报错:Uncaught TypeError: Cannot read properties of null (reading ‘isCE‘) 。 报错信息图示: 在GitHub上找到如下描述, 解决方案 网上…

【maya 入门笔记】基本视图和拓扑

1. 界面布局 先看基本窗口布局,基本窗口情况如下: 就基本窗口布局的情况来看,某种意义上跟blender更像一点(与3ds max相比)。 那么有朋友就说了,玛格基,那blender最下面的时间轴哪里去了&…

书生浦语大模型实战营-课程笔记(4)

微调分为两种,增量预训练和指令跟随。 指令跟随微调: 1.只对答案计算Loss 2.训练时数据为一问一答的形式(input和output) 增量预训练: 只需要output的数据进行训练 xtuner:微调框架 操作部分的笔记参考git上的文档…

杨中科 ASP.NET DI综合案例

综合案例1 需求说明 1、目的:演示DI的能力; 2、有配置服务、日志服务,然后再开发一个邮件发送器服务。可以通过配置服务来从文件、环境变量、数据库等地方读取配置,可以通过日志服务来将程序运行过程中的日志信息写入文件、控制台、数据库等。 3、说明…

python 基础知识点(蓝桥杯python科目个人复习计划43)

今日复习内容:做点真题和继续复习动态规划 例题1:三国游戏 (用的知识点是贪心和排序) 题目描述: 小蓝正在玩一款游戏,游戏中魏(X),蜀(Y)&…

HAL/LL/STD STM32 U8g2库 +I2C SSD1306/sh1106 WouoUI磁贴案例

HAL/LL/STD STM32 U8g2库 I2C SSD1306/sh1106 WouoUI磁贴案例 📍基于STM32F103C8T6 LL库驱动版本:https://gitee.com/chcsx/platform-test/tree/master/MDK-ARM🎬视频演示: WouoUI移植磁贴案例,新增确认弹窗 &#x1f…

《剑指Offer》笔记题解思路技巧优化 Java版本——新版leetcode_Part_3

《剑指Offer》笔记&题解&思路&技巧&优化_Part_3 😍😍😍 相知🙌🙌🙌 相识😢😢😢 开始刷题1. LCR 138. 有效数字——表示数值的字符串2. LCR 139. 训练计划…

【数据结构】17 二叉树的建立

二叉树的建立 由于树是非线性结构,创建一颗二叉树必须首先确定树中结点的输入顺序,常用方法是先序创建和层序创建。 层序创建所用的节点输入序列是按数的从上至下从左到右的顺序形成的各层的空结点输入数值0。在构造二叉树过程中需要一个队列暂时存储各…

AI数据中心网络架构需求:400/800G光模块

随着AI技术和相关应用的不断发展,大模型、大数据和AI计算能力在AI发展中的重要性日益凸显。大模型和数据集构成AI研究的软件基础,而AI算力是关键的基础设施。在本文中,我们将探讨AI发展对数据中心网络架构的影响。 Fat-Tree数据中心网络架构…

《白话C++》第10章 STL和boost,Page67~70 std::auto_ptr

std::auto_ptr可以不经意间转移裸指针控制权 std::auto_ptr持有裸指针的控制权&#xff0c;却可以随随便便看似不经意地转移给另一个auto_ptr: #include <iostream> #include <memory>using namespace std;struct S {int a;void SetA(int a){this->a a;}~S()…

跟着pink老师前端入门教程(JavaScript)-day02

三、变量 &#xff08;一&#xff09;变量概述 1、什么是变量 白话&#xff1a;变量就是一个装东西的盒子 通俗&#xff1a;变量是用于存放数据的容器&#xff0c;通过变量名获取数据&#xff0c;甚至数据可以修改 2、变量在内存中的存储 本质&#xff1a;变量是程序在内存…