-
Notifications
You must be signed in to change notification settings - Fork 4.3k
Refactor: Use esp_video component #1245
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
77fc210 to
ce624a7
Compare
|
可以对比一下替换前后的内存使用情况? 这个改动有点大,有哪些板子需要安排测试的,我可以联系一下。 |
数据我稍迟测一下。
我需要修改一下配置-测试说明。目前 S3 适配已经接近尾声了,等配置-测试说明改完就可以测。 当前主要在适配 P4 Hardware JPEG Encoder,P4 的测试还没有开始。 |
|
测试环境均为 SparkBot,均使用 240*240 分辨率 RGB565
esp_new_jpeg 在 JPEG Encode 时性能更好但是确实会多占用约 10k 内存,这部分 @78 考虑选哪一个软件编码? |
|
@laride 我提议 esp_new_jpeg 组件提供一个编译选项,可以使用动态内存。目前多出来的这 10多 k内存是 static 变量导致的,应该在创建 jpeg object 的时候申请 SRAM 内存,而不是一直占用。 |
不会一直占用的,JPEG Encode 结束就会释放。我们正在尝试做一些额外的优化 |
|
我觉得很棒! |
从拍照前的内存使用来看是少了12KB呢,你可以 |
识别完就释放了,这个是拍照 - JPEG Encode - 上传 - 清理完整的占用 |
另外做了一些额外的处理,现在 拍照后最低 sram 会比原有的软件编码还高一些 |
这个就很好了! |
ESP-SparkBot / AtomS3R CAM / M5Stack Core S3 我们自行测试,需要测试一下其他各个带摄像头的开发版,辛苦了。 S3 部分应该不会再有大改动,节后会继续适配 P4。 |
67f16eb to
6c9f9d1
Compare
|
PTAL @78 |
|
为什么没有触发 workflow action 的? |
触发了,跑完了 |
|
|
||
| > ![NOTE] | ||
| > | ||
| > 自版本 [待定] 起,由于依赖库不支持 OV3660 传感器,AtomS3R M12 无法使用摄像头识别功能。 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
如果合的话,这里需要改成实际的版本
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
意思是合并这个版本之后,暂时无法支持这个板子的摄像头对吗
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
对。
这个固件会同时用于 AtomS3R Cam (GC0308) 和 AtomS3R M12 (OV3660),前者可以正常使用摄像头,后者由于暂不支持该 sensor 故暂时无法使用摄像头。
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
OV3660 将在近期添加到 esp-video. 但是大批量的商用项目不建议将 OV3660 作为优先级高的 sensor 选型。
S3 使用 Flash QIO、Oct PSRAM、CPU 240M:已确认均已开启。 XCLK:目前是 24M,我改为 20M 后,测试 CONFIG_CAMERA_GC0308_DVP_YUV422_640X480_16FPS 已经有很大的好转。但是 CONFIG_CAMERA_GC0308_DVP_RGB565_640X480_16FPS 和 CONFIG_CAMERA_GC0308_DVP_RGB565_320X240_20FPS 还是花屏,是不是 @laride 内存拷贝出了问题? |
|
RGB565 格式在 esp_new_jpeg 组件中不支持。正在加。 |
RGB565 格式在 esp_new_jpeg 中不支持,还在推动增加支持。使用 JPEG 的情况下,先使用 YUV422。 |
|
JPEG 涉及解码,目前的路线暂时没有做 JPEG 解码,后续会随一些新的 feature 加上 JPEG 解码支持。 |
|
JPEG mode 的在 P4 上能用,S3 上的 JPEG 模式,DVP 驱动还在开发状态。 |
|
可以尝试在
加一行 vTaskDelay(100 / portTICK_PERIOD_MS);或者按前述降低一些 XCLK |
可以给个花屏的图吗 |
|
看上去是字节序处理不对,有 menuconfig 选项可以处理字节序。 启用 (Top) → Component config → Espressif Camera Sensors Configurations → Camera Sensor Configuration 的 Enable pixel byte order swapping 选项(如果存在此选项)。 如果没有这个选项,或者打开后没有效果,则禁用 Enable pixel byte order swapping 选项,启用 (Top) → Xiaozhi Assistant → Camera Configuration 的 Enable software camera buffer endianness swapping (USE WITH CAUTION) 选项。 |
这个方法可行。 这个方法能修复花屏问题: 另外,麻烦 @laride @WangYuxin-esp 看看 #1291 这个提到的是否 BUG。 |
|
测试硬件:P4+OV02C10(MIPI-CSI) 可驱动并运行, 但是屏幕预览和上传的图像均偏绿色。该摄像头驱动的像素格式为V4L2_PIX_FMT_VYUY,不是预设的V4L2_PIX_FMT_YUYV。 YUV422有多个像素格式变体,如YUYV、YYUV、YVYU等,建议考虑进去。 |
目前给小智 PR 的代码暂时只适配了比较常见的颜色格式,如果有额外需要您也可以帮忙完善代码。 对于 P4,可以考虑使用 RGB565 输出,在小智项目的预览阶段负载更小。在后续的 PR 中会有基于芯片能力的颜色格式优先级选择。
这块 Sensor 似乎还没有被 esp_cam_sensor 支持,缺少 ISP 配置文件,因此颜色与实际颜色具有一定区别。注意到 https://github.com/espressif/esp-video-components PR 46 正在添加 OV02C10,可以先尝试使用该 PR 提供的 ISP 配置文件。 |
* main: Add 16 more languages to locales (78#1297) Fix LilyGo-T-CameraPlus-S3 Camera (78#1295) Fix lichuang-dev camera (78#1290) 将太极派新款和旧款分离 (78#1287) Refactor: Use esp_video component (78#1245) add support for Wireless-Tag WTP4C5MP07S ESP32P4 board + 7 inch MIPI DSI LCD display combo (78#1281) Optimize AdcBatteryMonitor to work without charge detection pin. (78#1276) enable rrti for m5stack-tab5 (78#1268) Add LILYGO T-Display-P4 board adaptation (78#1269) Added Waveshare ESP32-P4-WIFI6-Touch-LCD-7B third party board (78#1243) Add esp32c5 configuration (78#1258) Change the button array to ADC buttons as in the board for esp32s3-korv2 (78#1256) Add SetInputGain(float gain) to AudioCodec (78#1252) Update README (78#1251)
|
测试硬件:esp32-s3-touch-lcd-3.5+ov2640, 使用 release.py esp32-s3-touch-lcd-3.5 完全编译时出现如下错误: K:/OpenSource/Aida64/xiaozhi-esp32/main/boards/esp32-s3-touch-lcd-3.5/esp32-s3-touch-lcd-3.5.cc:177:16: error: 'esp_cam_ctlr_dvp_pin_config_t' does not name a type K:/OpenSource/Aida64/xiaozhi-esp32/main/boards/esp32-s3-touch-lcd-3.5/esp32-s3-touch-lcd-3.5.cc:195:9: error: 'esp_video_init_sccb_config_t' was not declared in this scope; did you mean 'esp_video_init_config_t'? K:/OpenSource/Aida64/xiaozhi-esp32/main/boards/esp32-s3-touch-lcd-3.5/esp32-s3-touch-lcd-3.5.cc:201:9: error: 'esp_video_init_dvp_config_t' was not declared in this scope; did you mean 'esp_video_init_config_t'? K:/OpenSource/Aida64/xiaozhi-esp32/main/boards/esp32-s3-touch-lcd-3.5/esp32-s3-touch-lcd-3.5.cc:210:21: error: 'dvp_config' was not declared in this scope |
试试 IDF 5.5.1 |
|
df k10 的摄像头是 gc2145 也只有RGB640*480 没法正常使用。 |
无法使用具体是指什么?无法出数据,还是出数据,但是颜色、形状不对。 |
跟虾哥测试结果差不多,没有YUV选项,只有RGB ,mcp拍照 能拍照,但花屏,颜色,形状不对,开启和关闭颜色swap没什么变化,更换更高的分辨率也同样。 |
启用 XIAOZHI_ENABLE_CAMERA_DEBUG_MODE 截一下初始化阶段的 log,另外传一下花屏的图片 |
可以试下 https://github.com/espressif/esp-video-components/tree/master/esp_video/examples/simple_video_server 这个 example 排除一下其他情况,照片看上去可能不是过曝 |
试一下使用 |
稍微好些,偏白,能识别到大件物体 |
我借了一个行空板 K10,它的屏幕显示会偏白,选800x600时从小智后台聊天记录里看到的图片是正常的 |
也可以刷个 1.9的对比下效果 |










简介
当前 PR 重构原有的摄像头部分,使用
esp_video组件替代esp32-camera组件,使用esp_new_jpeg组件实现软件 JPEG Encode。相比 esp32-camera ,esp_video 支持更多接口:esp_video 支持 MIPI-CSI、ISP、USB (P4 Only)、DVP (P4/S3)、SPI (P4/S3/C3/C5/C6/C61) 接口的视频输入设备。
当前 PR 是支持 P4 MIPI-DSI 摄像头的前置条件。
开发版迁移指南
当前 PR 已经将所有使用摄像头组件的开发版改为使用 esp_video API
refactor: migrate boards to esp-video API (1/2)commit 中;refactor: migrate boards to esp-video API (2/2)commit 中。所有未测试的开发版只修改了 API 调用(摄像头配置生成)部分,仍需进行额外配置(下方1~2步和第4步)。esp_cam_sensor支持的范围内。config.json。main/boards/atoms3r-cam-m12-echo-base/atoms3r_cam_m12_echo_base.cc(创建新的 I2C bus)或main/boards/esp-sparkbot/esp_sparkbot_board.cc(复用现有的 I2C bus)初始化摄像头。config.json。其他破坏性更新
esp_cam_sensor不支持 OV3660 传感器,但 AtomS3R M12 使用了 OV3660 传感器。关联信息