当前位置: 首页 > news >正文

LuatOS——camera摄像头功能库使用详解

为简化摄像头在嵌入式设备中的集成难度,LuatOS推出了camera功能库,提供一套完整的Lua调用接口,支持摄像头的配置、控制与图像获取。该库广泛应用于智能硬件、安防设备等领域,是实现视觉功能的重要工具。

一、概述

camera 核心库是 LuatOS 的一个特色功能库,按照顺序调用就可以非常快捷的使用上摄像头外设,完成拍照,扫描任务,并将扫描结果和拍照文件存储。根据摄像头类型的不同分为三种使用逻辑:

SPI 摄像头:

适用于 Air700 系列、Air780 系列、Air8000 系列模组;

目前支持 gc0310、gc032a、bf30a2 三款摄像头,并且已经制作好了官方配置表,使用时只需要使用配置的函数初始化摄像头后,就可以调用 camera.capture()接口完成拍照或扫描的任务,再通过 camera.on()函数接收回调数据即可完成拍照或扫描业务;

USB 摄像头:

适用于 Air8101 系列模组;

支持多路 USB 摄像头,但是同时只能使用一路摄像头,根据 USB 端口号选择对应的摄像头,调用对应的初始化和拍照接口即可完成拍照业务;

DVP 摄像头:

适用于 Air8101 系列模组;

支持单路 DVP 摄像头,camera.init()初始化完成后执行 camera.capture()接口完成拍照或扫描任务即可完成拍照任务;

二、核心示例

1、核心示例是指:使用本库文件提供的核心 API,开发的基础业务逻辑的演示代码;

2、核心示例的作用是:帮助开发者快速理解如何使用本库,所以核心示例的逻辑都比较简单;
image

三、常量详解

核心库常量,顾名思义是由 LuatOS 内核固件中定义的、不可重新赋值或修改的固定值,在脚本代码中不需要声明,可直接调用;

3.1 camera.AUTO

image

3.2 camera.SCAN

image

3.3 camera.USB

image

3.4 camera.DVP

image

3.5 camera.ROTATE_0

image

3.6 camera.ROTATE_90

image

3.7 camera.ROTATE_270

image

3.8 camera.CONF_PREVIEW_ENABLE

image

3.9 camera.CONF_PREVIEW_ROTATE

image

四、函数详解

4.1 camera.init(InitReg_or_cspi_id, cspi_speed, mode, is_msb, rx_bit, seq_type, is_ddr, only_y, scan_mode, w, h)

功能

SPI 摄像头:

初始化摄像头,因为摄像头的初始化配置参数需要向摄像头对应的配置寄存器中写入参数,一般会有一两百个参数需要配置,所以我们制作了 gc0310、gc032a、bf30a2 这三款当前支持的摄像头参数配置表,并且将摄像头初始化参数的默认值已经写好,在使用这三个型号的摄像头时只需要 require 对应的配置表,并且调用对应的初始化函数(例如:gc0310Init())即可;

USB、DVP 摄像头:

在 Air8101 系列上支持多路 USB 摄像头,在多路摄像头使用时需要注意摄像头初始化动作

注意事项

如果对照片的大小有要求时,不要修改摄像头初始化时的像素参数,会造成摄像头初始化错误,初始化不会报错,但是回调会收不到任何信息。如需较小的照片结果请直接使用camera.capture()接口的裁切功能,直接输出裁切好的照片即可!

参数

InitReg_or_cspi_id
image

cspi_speed

image

mode

image

is_msb
image

rx_bit

image

seq_type
image

is_ddr
image

only_y

image

scan_mode
image

w
image

h
image

返回值

local result = camera.init(InitReg_or_cspi_id, cspi_speed, mode, is_msb, rx_bit, seq_type, is_ddr, only_y, scan_mode, w, h)

会有一个返回值 result

result
image

例子
image

4.2 camera.on(id , event , func)

功能

注册摄像头事件回调

注意事项

初始化摄像头成功后,所有摄像头事件均是由回调函数触发,所以在初始化成功后需马上注册回调,及时接收到摄像头执行任务后的结果;

参数

id
image

event
image

func

image

返回值

例子

image

4.3 camera.start(id)

功能

开始指定的摄像头,在初始化完摄像头后如果并不是马上需要拍照,可以先调用 camera.stop()暂停摄像头,拍照前再调用 camera.start()打开即可;

参数

id

image

返回值

local result = camera.start(id)

会有一个返回值 result

result
image

例子
image

4.4 camera.stop(id)

功能

暂停指定的 camera;

注意事项

是暂停不是关闭,暂停后可直接调用 camera.start()再开启摄像头拍照或者扫描,不需要再初始化;
摄像头配置表内已经调用了 camera.start(),如果调用接口 camera.init 初始化后不,需要立马拍照需及时调用 camera.stop()暂停摄像头,避免造成资源浪费;

参数

id
image

返回值

local result = camera.stop(id)

会有一个返回值 result

result
image

例子
image

4.5 camera.close(id)

功能

关闭指定的 camera,释放相应的 IO 资源

注意事项

Air780 系列、Air700 系列、Air8000 系列:

SPI 摄像头会占用 2 路 I2C、1 路 UART 和 2 路 onewire,在 SPI 摄像头启动时无法复用,所以摄像头业务执行完毕后可以调用 camera.close()关闭摄像头,释放 IO 资源;

Air8101 系列:

DVP 摄像头会占用 1 路 UART、1 路 I2C、6 路 PWM 并且同样管脚可复用一路 SPI 或一路以太网,DVP 摄像头启用时无法复用,所以摄像头业务执行完毕后可以调用 camera.close()关闭摄像头,释放 IO 资源;

参数

id
image

返回值

local result = camera.close(id)

会有一个返回值 result

result

image

例子

image

4.6 camera.capture(id, save_path, quality, x, y, w, h)

功能

摄像头初始化成功后执行拍照或扫描或录像业务;

可根据参数直接在这个接口里完成照片的裁切动作;

注意事项

执行拍照任务前一定要调用 camera.start()接口将摄像头打开;

如需较小的照片结果请直接使用camera.capture()接口的裁切功能,计算好接口中的x、y、w、h参数,直接输出裁切好的照片即可!

参数

id
image

save_path
image

quality
image

x
image

y
image

w

image

h
image

返回值

local result = camera.capture(1, "/capture.jpg", 80,10,15 , 310 , 465)

会有一个返回值 result

result
image

例子
image

4.7 camera.preview(id, mode)

功能

启停 camera 预览功能

注意事项

直接输出到 LCD 上,只有硬件支持 LCD 的 SOC 可以运行,启动预览前必须调用 lcd.int 等 api 初始化 LCD,预览时自动选择已经初始化过的 LCD;

参数

id
image

mode

image

返回值

local result = camera.preview(id, mode)

会有一个返回值 result

result

image

例子

image

4.8 camera.pwdn_pin(id, level)

功能

摄像头 PWDN 控制脚控制;

注意事项

该接口仅用于 Air72X 系列无法用 GPIO 控制 camera pwdn 脚的平台,手动控制 camera pwdn 脚拉高或者拉低;

参数

id
image

level

image

返回值

例子
image

4.9 camera.reset_pin(id, level)

功能

重启摄像头;

注意事项

该接口仅用于 Air72X 系列无法用 GPIO 控制 camera reset 脚的平台,手动控制 camera reset 脚拉高或者拉低;

参数

id

image

level

image

返回值

例子
image

五、模组支持说明

支持 LuatOS 开发的所有模组都支持 camera 核心库。

今天的内容就分享到这里了~

http://www.jsqmd.com/news/362505/

相关文章:

  • 对标国际标杆,数字冰雹 智能作战想定编辑工具 定义“新一代”战场仿真
  • APP与小程序开发科普:深圳昊客网络如何帮企业打造数字化增长引擎? - 专业GEO营销推广
  • LangChain构建测试用例Agent实战
  • 深度解析波士顿动力Atlas:研究版终极敏捷测试落幕,量产版剑指工业场景
  • 深度解析宇树机器人在-47.4℃的阿勒泰极限测试:低成本高实用的演进之路
  • 推荐一些Skills
  • Chromium 完整安装指南(Windows 版)
  • 2026年AI大模型入门指南:收藏这份学习资料,小白也能成为数字伙伴!
  • 深度解读特斯拉2026 AI战略:打通自动驾驶与Optimus的神经世界模拟器
  • 快速降低氨氮的方法及污水处理应用要点
  • 树的重心 + 树的同构
  • 低代码平台选型指南:五大定位迥异的“数字搭档”解析
  • AES-GCM 2级秘钥管理
  • SuperMap GIS基础产品FAQ集锦(20260209)
  • 介绍下AES-CBC的实现
  • 麻导程共
  • 2026国内最新修复次抛精华TOP5推荐:术后修护/敏感肌护理优质品牌权威榜单发布,资质合规 + 场景匹配 + 临床验证 + 稳定供应,精准适配多场景护肤需求 - 品牌推荐2026
  • ▲4FSK调制解调+扩频解扩通信链路matlab误码率仿真
  • 完整教程:音乐生成模型综述:从符号作曲到音频域大模型、评测体系与产业化趋势
  • 动力仁金海龙胶囊:以科学认知,应对精力挑战 - 宏洛图品牌设计
  • 知识图谱是啥?与关系型数据库有何区别?
  • 非暴力沟通
  • 从看天吃饭到屏幕管田,智能设备守护农田提质增效
  • SSM智能新冠疫苗接种助手6hz40(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面
  • 2026年APP开发与微信小程序开发服务商排行榜:深圳昊客网络凭什么成为中小企业首选? - 专业GEO营销推广
  • SSM智能线上教育mo0l5(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面
  • 让大模型真正为你工作:一文读懂RAG与微调的选择逻辑
  • 2026国内最新美白防晒乳TOP5推荐:高倍养肤防晒权威榜单,资质合规 + 场景匹配 + 临床验证 + 稳定供应,外挡内白适配多场景需求 - 品牌推荐2026
  • 【开题答辩过程】以《基于SpringBoot和MySQL的家庭财务管理系统》为例,不知道这个选题怎么做的,不知道这个选题怎么开题答辩的可以进来看看
  • 亲测有效!清吧互动大屏点歌实践分享