ESP-IDF ov摄像头(2640 5640 7670) JPEG压缩

2023-05-16

TCP协议传输图像、USB摄像头尝试、ov5640和0v7670摄像头驱动、ESP官方库函数将图像压缩成jpeg

ESP32-S3的DevKitC-1开发板的USB OTG功能(我买的开发板不是官方的),需要把开发板底下的USB-OTG触点短接

df591d7b70744886b0410261deaeb1f2.png

短接后,终于把USB通讯问题解决了!

UVC问题论坛

Is there any example to capture a image from USB camera (AEGHB-15) · Issue #230 · espressif/esp-iot-solution · GitHub

        但是UVC似乎没法支持30万像素以上分辨率的摄像头,项目需求要高分辨率,故暂时放弃USB摄像头这个选项,各位大佬有什么办法希望指教下。

 

        买了了OV5640摄像头,原始驱动该摄像头去获取图像,为此,我花了几天踩坑,学习了ESP-IDF,因为Arduino的Camera库总有莫名其妙的错误,而且配置范围受限。

 

 

先使用了实验室的OV7670摄像头成功,下图:

214502d0b13c460dbdf79cdbee5ac539.png

但是OV7670官方库不能直接获取JPEG格式图像,获取的是RGB格式图像,网络传输用RGB格式很慢数据太大了,所以需要RGB转JPEG压缩一下。

JPEG压缩代码:

size_t  _jpg_len;
uint8_t *_jpg_buf;

//转化JPEG
uint8_t temp = frame2jpg(pic, 90, &_jpg_buf, &_jpg_len);

printf("trunfrom :%d\n",temp);

//socket发送
ESP_ERROR_CHECK(sock_tcp_send(sock, _jpg_buf, maxcache));

但是ESP官方库仅仅支持OV7670最大分辨率640X480,但是成功驱动也是很令人开心的。

 

        购入的OV5640到了,也是成功驱动,但是都有和上面一样的问题,偶尔会有花屏现象,有时候很严重,可能是杜邦线连接干扰大的原因,后面上PCB试试效果。

        OV5640图像:

867e5c2979dc4c7b92e44f8638f6ed03.png

 

        发现一个问题,就是S3在将芯片时钟频率从160Mhz配置240Mhz的时候,WIFI的sockt_connect不工作堵塞住了,降回160Mhz就可以,找时间去github上讨论下。

 

        再发现一个问题,S3驱动OV5640在拍摄到大概16次或者多次的时候,会有报错

a7ca30971f0a4719a378333d8806b832.png

尝试调参数看看是什么问题……

20分钟后.......

解决了,发现pic = esp_camera_fb_get()给的pic->buf不能对其本身+和-,需要使用一个变量进行缓存位置计数,例如:

pic = esp_camera_fb_get();

// 将图片数据分段发
size_t leng = pic->len;
// 清空缓存计数
cambuf_count = 0;
// 计算要分发几个数据包
int timess = leng/maxcache;
// 剩余图像数据
int extra = leng%maxcache;


for(int i = 0;i < timess;i++){
    //tcp分包发送图像
    ESP_ERROR_CHECK(sock_tcp_send(sock, pic->buf+cambuf_count, maxcache));
    
    //计数跟上
    cambuf_count+=maxcache;

    printf("send tcp> %d\n", i);

}


if(extra > 0){
    //剩余的图像数据
    ESP_ERROR_CHECK(sock_tcp_send(sock, pic->buf+cambuf_count, extra));
}

//将指针返还
esp_camera_fb_return(pic);

用cambuf_count对buf读取到哪里的位置计数,下次读取就在buf基础上加cambuf_count就可以。

以上也可以用socket 的 write()函数实现,直接给图片帧的指针bud 和图片帧的大小len ,不需要自己进行分包发送。

 

 

 

 

 

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

ESP-IDF ov摄像头(2640 5640 7670) JPEG压缩 的相关文章

  • TF-IDF

    1 TF IDF是什么 xff1f TF IDF xff1a term frequency inverse document frequency 1 tf idf 作为一种权重经常被用作信息检索和文本挖掘领域 2 这样一种权重时通过统计计算
  • esp-aliyun undefined reference to `pthread_create‘错误

    FreeRTOS 错误信息 Users esp8266 projects wendeng build esp aliyun libesp aliyun a span class token punctuation span wrapper
  • DIY-BETAFPV和DIY(ESP-01F+E19-900M20S2模块)915MHz信号测试对比

    DIY BETAFPV和DIY xff08 ESP 01F 43 E19 900M20S2模块 xff09 915MHz信号测试对比 1 前提条件2 实测效果2 1 起点附近 xff08 距离3m左右 xff09 2 2 30m米距离 xf
  • 阅读笔记:TF - IDF 原理

    今天查阅 TF IDF 资料 xff0c 发现百度百科里面提供了一个例子 xff0c 解释的很清楚 xff0c 记下来备用 原文链接 xff1a https baike baidu com item tf idf 8816134 fr 61
  • 自然语言处理(NLP)之使用TF-IDF模型计算文本相似度

    自然语言处理 NLP 之使用TF IDF模型计算文本相似度 所用数据集 xff1a ChnSentiCorp htl all csv 语料库即存放稀疏向量的列表 要注意的是 xff0c 搜索文本text与被检索的文档共用一个特征词词典 NL
  • 利用esp-8266实现wifi攻击

    0x00 前言 之前在b站上看到这个wifi模块的攻击视频感觉挺有意思 xff0c 就在某宝上入了一个拿回来玩玩 0x01 外观 转接头需要自己另外买 0x03 编译程序 https anky cc esp8266 deauther wif
  • ESP32-IDF 使用VSCODE添加自己的头文件后无法找到的问题

    最近在学习esp32 xff0c 使用VSCODE进行开发 今天在添加自己的项目文件 xff0c 编译后 xff0c 系统提示找不到头文件 xff0c 找了很久 xff0c 最终在大佬同事的帮助下才解决 xff0c 这里记录一下 情况一 x
  • TF-IDF算法

    TF IDF算法 TF IDF term frequency inverse document frequency 是一种用于信息检索与数据挖掘的常用加权技术 xff0c 常用于挖掘文章中的关键词 xff0c 而且算法简单高效 xff0c
  • ESP实验02-读取DS1307&eerom34c32

    1 模块介绍 本实验主要用到两个模块 esp32 tinyRTC 模块的图片如下所示 xff1a esp32模块型号为ESP32Devkitc v4 xff0c 是启明云端官方的开发板 与乐鑫官方的完全一致 xff0c 引脚顺序 xff0c
  • ESP IDF socket 遇到以及解决 Socket unable to connect: errno 118

    看代码 xff1a 以下代码的一部分是自己封装的库 组件 引脚初始化 gpio init 2 GPIO MODE OUTPUT LED亮 gpio set level 2 1 连接网络 WiFi connect LED灭 gpio set
  • ESP-AT 系列: AT+MQTT 使用

    AT 工程 xff1a https github com espressif esp at AT 文档 xff1a https docs espressif com projects esp at zh CN latest MQTT AT
  • VScode+esp-idf:例程(esp32-web-camera)保存视频到sd卡(附源码)

    文章目录 1 移植到 esp32 web camera 2 jpeg2avi使用方法2 1 何处调用jpeg2avi start2 2 何处调用jpeg2avi add frame2 3何处调用jpeg2avi end 3 编译运行工程4
  • ESP-Drone控制板设计的第二个任务-绘制USB-TTL串口下载电路和ESP32-S2芯片内置USB接口电路

    1 摘要 ESP32系列处理器一般会需要采用串口来下载代码 xff0c 因此在其设计中都会保留一个USB TTL串口电路 xff0c 查看乐鑫官网的参考设计 xff0c 基本上是采用CP2102这颗USB转TTL串口芯片 xff0c 但在本
  • ESP32(ESP-IDF)+CNC Shield+A4988控制步进电机

    陈拓 2023 04 15 2023 04 15 1 简介 在 Arduino Uno开发板 43 电机驱动扩展版CNC Shield V3 0硬件说明 https blog csdn net chentuo2000 article det
  • ESP32 WiFi Mesh开发(二):ESP WiFi Mesh接口简析

    1 ESP MDF架构 ESP MDF是ESP Mesh Development Framework的缩写 xff0c 也就是 ESP Mesh开发架构 xff0c 其结构如下 xff1a 红框部分是WiFi Mesh协议栈 xff0c 其
  • ESP32 之 ESP-IDF 教学(十二)WiFi篇—— LwIP 之 TCP 通信

    本文章 来自原创专栏 ESP32教学专栏 基于ESP IDF xff0c 讲解如何使用 ESP IDF 构建 ESP32 程序 xff0c 发布文章并会持续为已发布文章添加新内容 xff01 每篇文章都经过了精打细磨 xff01 通过下方对
  • Arduino for ESP32-----ESP-NOW介绍及使用

    ESP NOW ESP NOW介绍ESP NOW支持以下特性ESP NOW技术也存在以下局限性获取ESP32的MAC地址ESP NOW单向通信 One way communication ESP32单板间的双向通信一对多通信 xff08 一
  • micropython 通过spi驱动LCD显示屏

    我呢一直对电路设计和程序设计有非常大的爱好 不好说有多精通 纯属个人弄着玩的 所以后面有时间可以和大家一起来交流一下 另外最近也接触了一些PCB 所以一些开发板之类的都自己设计制作了 今天讲的是通过micropython来驱动LCD显示 用
  • esp32开发板学习

    1 esp32简介 esp32说到底就是一个小型的linux 可以执行我们的代码 尺寸只有一个苹果watch se的大小 可以集成各个物理组件 好像是通过开发板上的引脚来操作的 2 开发板部署python环境 2 1 在pdd花10块钱买了
  • linux espidf vscode

    安装 根据 https docs espressif com projects esp idf zh CN latest esp32s2 get started linux macos setup html 里的要求安装一些东西 点插件的首

随机推荐

  • 处理机调度

    调度算法 第一类就绪队列怎么排 第二类是每一次执行时间的长短的控制 第三类关于多种算法如何综合到一起 先来先服务算法 按着到就绪队列里的先后顺序来排队的在找就绪进程的时候也是按照这个先后顺序来 按先来后到没有考虑到进程的特征 缺点 xff1
  • 死锁产生和预防

    死锁的产生 1 资源是互斥的 资源在同一时刻只有一个进程才能够使用和访问 2 持有并等待 一个进程持有一份资源阻塞等待其它进程释放资源 3 资源不可抢占 只有一个进程使用完资源之后其它进程才能够占有使用 4 循环等待 在等待资源的进程集合中
  • 第一次实验报告:使用Packet Tracer分析HTTP数据包

    姓名 xff1a 刘钰 学号 xff1a 201821121036 班级 xff1a 计算1812 1 实验目的 熟练使用Packet Tracer工具 分析抓到的HTTP数据包 xff0c 深入理解 xff1a HTTP协议 xff0c
  • 超详细|一篇搞定操作系统——用户接口

    文章目录 6 1 用户接口6 2 其他特殊操作系统6 2 1 嵌入式操作系统6 2 2 分布式操作系统 操作系统全家桶 xff1a 传送门 一 操作系统引述 xff1a https blog csdn net diviner s artic
  • mac搭建嵌入式编程环境--交叉编译工具链crosstool-ng

    1 第一个思路就是和ubuntu一样 xff0c 是否有apt get一样的管理软件包工具 查了一下有类似的macport和homebrew macport下载方法 xff1a https guide macports org instal
  • 用matlab处理px4日志的转换方法

    px4 v1 8 2的版本可以选择用sdlog2模块记录日志 xff0c 通过QGC地面站下载的日志格式为 ulg xff0c 将下载成功的 ulg扩展名改为 bin xff0c 然后用MP地面站 数据闪存日志 创建matlab文件 xff
  • 关于VTOL垂直起降模式的参数很详细的介绍

    转载 xff1a 基于Ardupilot PX4固件 xff0c APM PIXhawk硬件的VTOL垂直起降固定翼软硬件参数调试 xff08 第二篇 xff09 https blog csdn net u011322358 article
  • PX4二次开发中查无资料的踩坑总结

    写在前 xff1a 2021年9月下旬开始摸索px4飞控的二次开发 xff0c 从C 43 43 零基础到第一个修改算法后的版本稳定运行 xff0c 大概用了2个月 xff0c 从12月初改用新版本px4源码到现在又过去了约1个月 xff0
  • 程序员你为什么迷茫?

    你曾经充满热情 xff0c 是一位开源软件倡导者 xff0c 你崇尚全栈工程师才有未来的理念 xff0c 你渴望改变世界 但是现在你每天都处于焦虑之中 xff0c 你每天不断地学习各种技术Kotlin Swift React Native
  • 计算机网络保研面试题

    1 TCP和UDP的异同点 相同点 xff1a 都是运输层协议 不同点 xff1a 1 TCP xff1a 面向连接的 点对点的 面向字节流的 提供可靠交付的 全双工的 2 UDP 无连接的 支持一对一 amp 一对多 amp 多对多的通信
  • ERROR: Error while loading flash algo ELF file. No file specified

    Connecting to J Link J Link is connected ERROR Error while loading flash algo ELF file No file specified Failed to set d
  • ubuntu 火狐浏览器不能下载插件问题

    1 在地址栏输入 about config 2 搜索 security OCSP enabled 61 0 3 把结果改为0即可 转载于 https www cnblogs com JohannaFeng p 4720319 html
  • 基于51单片机的智能恒压水塔水箱供水系统设计(毕设课设)

    通过控制变频器的输出频率从而自动调节水泵电机的转速 xff0c 实现管网水压的闭环调节 PID xff0c 使供水系统自动恒稳于设定的压力值 即用水量增加时 xff0c 频率升高 xff0c 水泵转速加快 xff0c 供水量相应增大 xff
  • 算法优化的一般方法——以ARM平台为例

    目录 一 为什么要进行算法优化 xff1f 二 算法优化方法 一 为什么要进行算法优化 xff1f 算法在部署到硬件平台时 xff0c 对于性能的要求非常高 xff0c 如果不进行一定程度的优化 xff0c 算法耗时一般来讲都难以满足要求
  • 小米开源:站在巨人肩膀上的创新

    2014 07 22 18 08 小米 开源 企业开源 7月22日消息 xff0c 小米4 手机今天发布 xff0c 又一次掀起了业界关于 小米现象 的讨论热潮 借着这股东风 xff0c 我们来了解一下 开源 文化在这个炙手可热的科技公司中
  • arduino怎么导入第三方库和官方库

    一 导入第三方库文件 找到arduino安装程序选的安装位置 例如如果是下面的位置的话 那就在D software Arduino下找到libraries 然后再把下载的第三方库文件移动到里面 比如我下载了一个I2Cdev的三方库 I2Cd
  • 低成本ESP32-CAM,YOLO核心代码识别,录像保存,项目中问题分享以及解决。

    ESPCAM监控的具体细节 Arduino编写 xff0c FreeRTOS系统 以便后面添加其他功能 xff0c 图片以UDP发送 xff0c 数据处理基本在服务端 xff0c TCL连接给ESP32人或物的位置 xff0c 两个舵机控制
  • 监控物联网项目:web、flv视频流 、websocket、ESP32

    在网上接了第一个项目 xff0c 在此记录 目录 项目需求 前端浏览 两个后端 python后端 nginx flv 43 ffmpeg后端 总结 项目需求 手机浏览器 xff0c 远程查看实时监控视频 按钮控制电机 获取环境温度 难点 x
  • ESP IDF socket 遇到以及解决 Socket unable to connect: errno 118

    看代码 xff1a 以下代码的一部分是自己封装的库 组件 引脚初始化 gpio init 2 GPIO MODE OUTPUT LED亮 gpio set level 2 1 连接网络 WiFi connect LED灭 gpio set
  • ESP-IDF ov摄像头(2640 5640 7670) JPEG压缩

    TCP协议传输图像 USB摄像头尝试 ov5640和0v7670摄像头驱动 ESP官方库函数将图像压缩成jpeg ESP32 S3的DevKitC 1开发板的USB OTG功能 xff08 我买的开发板不是官方的 xff09 xff0c 需