• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# 背景建模(GMM2)
2
3## 1.概述
4
5* 基于SDK sample的GMM2高斯背景建模对yuv格式的场景流进行背景建模,
6
7* 示例代码参考在device/soc/hisilicon/hi3516dv300/sdk_linux/sample/platform/svp/ive/sample路径下的sample_ive_gmm2.c
8* 分析sample_ive_gmm2.c中的HI_VOID SAMPLE_IVE_Gmm2(HI_VOID);对该接口的解读如下图所示:
9
10![](./figures/hispark_taurus_color_space_convert_sample/010gmm2%E6%8E%A5%E5%8F%A3%E8%A7%A3%E8%AF%BB.png)
11
12运行的主入口在device/soc/hisilicon/hi3516dv300/sdk_linux/sample/platform/svp/ive/中sample_ive_main.c文件中,如下图所示:
13
14![](./figures/hispark_taurus_color_space_convert_sample/011SAMPLE_IVE_GMM2.png)
15
16关于GMM2算子的其他细节,自行查阅device/soc/hisilicon/hi3516dv300/sdk_linux/sample/platform/svp/ive/sample/sample_ive_gmm2.c代码即可。
17
18## 2.编译
19
20在编译sample_ive_main.c之前,需确保OpenHarmony 小型系统的主干代码已经整编通过,**且已经按照《[修改源码及配置文件适配Taurus开发板](2.2.1.%E4%BF%AE%E6%94%B9%E6%BA%90%E7%A0%81%E5%8F%8A%E9%85%8D%E7%BD%AE%E6%96%87%E4%BB%B6%E9%80%82%E9%85%8DTaurus%E5%BC%80%E5%8F%91%E6%9D%BF.md)》的内容进行修改**。在单编sample_ive_main.c前,需修改目录下的一处依赖,进入//device/soc/hisilicon/hi3516dv300/sdk_linux目录下,通过修改BUILD.gn,在deps下面新增target,``"sample/platform/svp/ive:hi3516dv300_ive_sample"``,如下图所示:
21
22![](./figures/hispark_taurus_color_space_convert_sample/067%E4%BF%AE%E6%94%B9buildgn.png)
23
24* 点击Deveco Device Tool工具的Build按键进行编译,具体的编译过程这里不再赘述,编译成功后,如下图所示:
25
26![](./figures/hispark_taurus_helloworld_sample/0002-build%20success.png)
27
28* 编译成功后,即可在out/hispark_taurus/ipcamera_hispark_taurus_linux/rootfs/bin目录下,生成 ohos_ive_demo可执行文件,如下图所示:
29
30![](./figures/hispark_taurus_color_space_convert_sample/069%E5%BE%97%E5%88%B0%E5%8F%AF%E6%89%A7%E8%A1%8C%E6%96%87%E4%BB%B6.png)
31
32## 3. 拷贝可执行程序和依赖文件至开发板的mnt目录下
33
34**方式一:使用SD卡进行资料文件的拷贝**
35
36* 首先需要自己准备一张SD卡
37* 步骤1:将编译后生成的可执行文件拷贝到SD卡中。
38* 步骤2:将device\soc\hisilicon\hi3516dv300\sdk_linux\out\lib\目录下的**libvb_server.solibmpp_vbs.so**拷贝至SD卡中
39* 步骤3:将device/soc/hisilicon/hi3516dv300/sdk_linux/sample/platform/svp/ive/目录下的 data文件拷贝至SD卡中。(前提是按照《[获取sample依赖的资源文件到本地](6.2.%E8%8E%B7%E5%8F%96sample%E4%BE%9D%E8%B5%96%E7%9A%84%E8%B5%84%E6%BA%90%E6%96%87%E4%BB%B6%E5%88%B0%E6%9C%AC%E5%9C%B0.md)》文档获取了资源文件)
40
41![](./figures/hispark_taurus_color_space_convert_sample/071%E5%B0%86ive%E4%BE%9D%E8%B5%96%E7%9A%84%E6%96%87%E4%BB%B6%E6%8B%B7%E8%B4%9D%E8%87%B3SD%E5%8D%A1%E4%B8%AD.png)
42
43* 步骤4:可执行文件拷贝成功后,将内存卡插入开发板的SD卡槽中,可通过挂载的方式挂载到板端,可选择SD卡 mount指令进行挂载。
44
45```shell
46mount -t vfat /dev/mmcblk1p1 /mnt
47# 其中/dev/mmcblk1p1需要根据实际块设备号修改
48```
49
50* 挂载成功后,如下图所示:
51
52![](./figures/hispark_taurus_color_space_convert_sample/072%E6%8C%82%E8%BD%BDSD%E5%8D%A1%E8%87%B3%E5%BC%80%E5%8F%91%E6%9D%BFmnt%E7%9B%AE%E5%BD%95%E4%B8%8B.png)
53
54**方式二:使用NFS挂载的方式进行资料文件的拷贝**
55
56* 首先需要自己准备一根网线
57* 步骤1:参考[博客链接](https://blog.csdn.net/Wu_GuiMing/article/details/115872995?spm=1001.2014.3001.5501)中的内容,进行nfs的环境搭建
58* 步骤2:将编译后生成的可执行文件拷贝到Windows的nfs共享路径下
59* 步骤3:将device\soc\hisilicon\hi3516dv300\sdk_linux\out\lib\目录下的**libvb_server.solibmpp_vbs.so**拷贝至Windows的nfs共享路径下
60* 步骤4:将device/soc/hisilicon/hi3516dv300/sdk_linux/sample/platform/svp/ive/目录下的 data文件拷贝至Windows的nfs共享路径下。(前提是按照《[获取sample依赖的资源文件到本地](6.2.%E8%8E%B7%E5%8F%96sample%E4%BE%9D%E8%B5%96%E7%9A%84%E8%B5%84%E6%BA%90%E6%96%87%E4%BB%B6%E5%88%B0%E6%9C%AC%E5%9C%B0.md)》文档获取了资源文件)
61
62![](./figures/hispark_taurus_color_space_convert_sample/070%E5%B0%86ive%E4%BE%9D%E8%B5%96%E7%9A%84%E6%96%87%E4%BB%B6%E6%8B%B7%E8%B4%9D%E8%87%B3nfs.png)
63
64* 步骤5:执行下面的命令,将Windows的nfs共享路径挂载至开发板的mnt目录下
65
66```
67mount -o nolock,addr=192.168.200.1 -t nfs 192.168.200.1:/d/nfs /mnt
68```
69
70## 4.拷贝mnt目录下的文件至正确的目录下
71
72* 执行下面的命令,拷贝mnt目录下面的ohos_ive_demo和data至userdata目录,拷贝mnt目录下面的libvb_server.solibmpp_vbs.so/usr/lib/目录下,
73
74```
75cp /mnt/ohos_ive_demo  /userdata
76cp /mnt/data /userdata -rf
77cp /mnt/*.so /usr/lib/
78```
79
80![](./figures/hispark_taurus_color_space_convert_sample/073%E6%8B%B7%E8%B4%9Dmnt%E4%B8%AD%E7%9A%84%E8%B5%84%E6%BA%90%E6%96%87%E4%BB%B6%E8%87%B3userdata%E7%9B%AE%E5%BD%95.png)
81
82* 执行下面的命令,给ohos_ive_demo文件可执行权限
83
84```
85chmod 777 /userdata/ohos_ive_demo
86```
87
88## 5. 功能验证
89
90* 执行下面的命令,启动可执行文件
91
92```
93cd /userdata
94
95./ohos_ive_demo 3
96```
97
98![](./figures/hispark_taurus_color_space_convert_sample/076%E6%89%A7%E8%A1%8CGMM2%E7%A8%8B%E5%BA%8F.png)
99
100* 执行完成后,相应结果存放在/userdata/data/output/gmm2目录下,如下图所示:
101
102![](./figures/hispark_taurus_color_space_convert_sample/018%E5%BE%97%E5%88%B0yuv%E6%96%87%E4%BB%B6.png)
103
104* 将bg_352x288_sp400.yuvfg_352x288_sp400.yuv通过nfs或者SD卡挂载的方式,拷贝到本地,通过YUVPlayer即可查看效果,关于YUVPlayer自行到网上下载即可。
105
106* GMM2处理效果如下图所示:
107  * 原始图像:
108
109![](./figures/hispark_taurus_color_space_convert_sample/019%E5%8E%9F%E5%A7%8B%E5%9B%BE%E5%83%8F.png)
110
111* 前景图像:
112
113![](./figures/hispark_taurus_color_space_convert_sample/020%E5%89%8D%E6%99%AF%E5%9B%BE%E5%83%8F.png)
114
115* Background图像:
116
117![](./figures/hispark_taurus_color_space_convert_sample/021background%E5%9B%BE%E5%83%8F.png)
118