zqy 8ff0c5a445 zz 2 years ago
..
$M0F6%6YR4@P8~%~8PAC1CT.png 8ff0c5a445 zz 2 years ago
README.md 8ff0c5a445 zz 2 years ago
cf932064c00fbe90a1949afc62fe2ab-16460777703611.png 8ff0c5a445 zz 2 years ago
cf932064c00fbe90a1949afc62fe2ab-16460782464393-16460782486594.png 8ff0c5a445 zz 2 years ago
cf932064c00fbe90a1949afc62fe2ab-16460782464393.png 8ff0c5a445 zz 2 years ago
cf932064c00fbe90a1949afc62fe2ab.png 8ff0c5a445 zz 2 years ago
image-20220315120738982.png 8ff0c5a445 zz 2 years ago
image-20220315120759724.png 8ff0c5a445 zz 2 years ago
watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA6KGM6KGMeGg=,size_20,color_FFFFFF,t_70,g_se,x_16.png 8ff0c5a445 zz 2 years ago

README.md

照相机案例说明文档

介绍

本项目基于openharmony成功实现了按键操作照相机,照相机拍照,录像,预览等功能

参考文档

https://gitee.com/openharmony/multimedia_camera_standard

https://gitee.com/42690727/my-open-harmony-sample/tree/master/%E6%A0%87%E5%87%86%E8%AE%BE%E5%A4%87/3.1%20Beta/%E6%8B%8D%E7%85%A7

https://blog.csdn.net/scy518/article/details/12022092

环境搭建

参考官方文档搭建OpenHarmony Beta3.1版本代码标准系统开发环境

https://www.bookstack.cn/read/openharmony-1.0-zh-cn/quick-start-%E6%90%AD%E5%BB%BA%E7%8E%AF%E5%A2%83.md

如果测试demo03下载OpenHarmony 3.0 LTS 版本

#repo init -u git@gitee.com:openharmony/manifest.git -b OpenHarmony-3.0-LTS --no-repo-verify

如果测试demo01或demo02使用Beta3.1版本代码

#repo init -u git@gitee.com:openharmony/manifest.git -b refs/tags/OpenHarmony-v3.1-Beta --no-repo-verify

#repo sync -c #repo forall -c 'git lfs pull'

示例实操

Demo01

按键操作系统照相机,此处内容参考于 Camera组件讲解 https://gitee.com/openharmony/docs/blob/master/zh-cn/device-dev/driver/driver-peripherals-camera-des.md https://gitee.com/openharmony/multimedia_camera_standard

linux文件操作GPIO

https://blog.csdn.net/scy518/article/details/12022092

将本仓库key_camera文件夹下源码下载并替换到/drivers/peripheral/camera/hal/init路径下相同名称代码,标准系统编译烧录,启动系统后进入bin目录,运行ohos_camera_demo应用,在按下按键后输入q,即可看到成功拍照,同时自动退出应用,也可根据提示测试不同功能案例

Demo02

按键操作简单照相机,此处内容参考于 Camera组件讲解 https://gitee.com/openharmony/docs/blob/master/zh-cn/device-dev/driver/driver-peripherals-camera-des.md https://gitee.com/openharmony/multimedia_camera_standard

开源代码 https://gitee.com/42690727/my-open-harmony-sample/tree/master/%E6%A0%87%E5%87%86%E8%AE%BE%E5%A4%87/3.1%20Beta/%E6%8B%8D%E7%85%A7

https://blog.csdn.net/scy518/article/details/12022092

将本仓库ai_camera文件夹源码下载到 src/applications/standard/app 路径下,app是新建文件夹 在applications\standard\hap\ohos.build文件路径下 module_list里增加 "//applications/standard/app:ai_camera"

执行编译命令 ./build.sh --product-name Hi3516DV300 --ccache

烧录后进入bin目录,运行编译文件

cd bin ./ai_camera

按下按键即可拍照

bin目录中的ai_camera应用

img

按键照相运行截图

进入/data/capture目录下可查看拍照存储的文件

Demo03

camera_sample使用 参考应用开发实例 https://docs.openharmony.cn/pages/000600020002/

https://gitee.com/openharmony/multimedia_camera_standard

此处内容基于OpenHarmony3.0LTS版本源代码 使用方法 说明:开发板启动后默认会加载launcher应用,应用的图形界面默认显示在媒体图层上方,会影响camera_sample的演示结果,因此需要在编译或是打包时去掉launcher应用。 修改方法:将“build/lite/components/applications.json”中camera_sample_app组件的targets中"//applications/sample/camera/launcher:launcher_hap"整行注释或删除。 修改源码路径“applications/sample/camera/media/BUILD.gn”中第一处的output_dir。

修改前:output_dir = "$root_out_dir/dev_ools" 修改后:output_dir = "$root_out_dir/" 重新执行源码仓编译并烧写入单板后,可在单板bin目录下找到camera_sample文件。

camera_sample是源代码中提供的一个相机实例,可以作为开发者的实例参考 启动后bin目录如图所示

img点击并拖拽以移动

启动camera_sample

img点击并拖拽以移动

说明

输入 1:启动拍照 2:启动摄像 3: 启动预览 q:退出

camera目录

仓目录结构如下:

/foundation/multimedia/camera_standard # 相机组件业务代码 ├── frameworks # 框架代码 │ ├── native # 内部接口实现 │ │ ├── camera # 相机框架实现 │ │ └── metadata # 元数据实现 │ └── js # 外部接口实现 │ └── camera_napi # 相机NAPI实现 ├── interfaces # 接口代码 │ ├── inner_api # 内部接口 │ └── kits # 外部接口 ├── LICENSE # 许可证文件 ├── ohos.build # 构建文件 ├── sa_profile # 服务配置文件 └── services # 服务代码 ├── camera_service # 相机服务实现 └── etc # 相机服务配置

原理说明

驱动GPIO

使用linux自带通用GPIO驱动

参考

Linux通用GPIO驱动写法与应用_scy518的博客-CSDN博客

GPIO口信息可以从原理图中获取: 可以看到两个自定义按钮的GPIO口分别是:GPIO0_1,GPIO0_2 输入图片说明 从文档,了解到Hi3516DV300有控制器管理12组GPIO管脚,每组8个。

GPIO号 = GPIO组索引 (0~11) * 每组GPIO管脚数(8) + 组内偏移

举例:GPIO10_3的GPIO号 = 10 * 8 + 3 = 83

所以,按钮

GPIO0_1 = 0 * 8 + 1 = 1

GPIO0_2 = 0 * 8 + 2 = 2

GPIO配置:

函数声明

img点击并拖拽以移动

函数定义,例如

img点击并拖拽以移动

完成后即可进行GPIO口的初始化,引脚输入输出定义

img点击并拖拽以移动

驱动照相机

相机驱动的使用可以通过查看文档说明: https://gitee.com/openharmony/multimedia_camera_standard

1.创建缓冲区消费者端监听器(CaptureSurfaceListener)以保存图像。

2.获取相机管理器实例并获取相机对象列表。

3.使用相机对象创建相机输入来打开相机。

4.创建采集会话。

5.开始配置采集会话。

6.将相机输入添加到采集会话。

7.将相机输入添加到采集会话。

8.将相机输入添加到采集会话。

9.将拍照输出添加到采集会话。

10.将配置提交到采集会话。

11.拍摄照片。

12.释放采集会话资源。

13.释放采集会话资源。