运行海思 sample 代码
目录 (Table of Contents)
[TOCM]
1 梳理文档
唉,海思的文档真的是让人一言难尽...我也不多吐槽了,还是说说最近的体会吧。 大家作为开发者最关心 API 怎么用,海思也对应地提供了 API 参考文档和例程。
主要的文档
- 在 Hi3519A V100R001C02SPC010\ReleaseDoc\zh\01.software\board\MPP 目录下的
HiMPP V4.0 媒体处理软件开发参考.pdf
- 以及在 Hi3519A V100R001C02SPC010\ReleaseDoc\zh\01.software\board\SVP 目录下的
HiIVE API 参考.pdf
和HiIVS API参考.pdf
大部分需要用到的 API 都在 IVE 中, IVS主要对应的是 Motion Detection(移动侦测)。
主要例程
在 Linux 中进入 Hi3519AV100_SDK_V2.0.1.0/smp/a53_linux/mpp/sample 目录,里面的文件大部分都和 MPP 有关系,我们需要例程的在 Hi3519AV100_SDK_V2.0.1.0/smp/a53_linux/mpp/sample/svp/ive 目录下。
sample_ive_main.c
主要有以下功能
printf("\t 0)BgModel,<encode>:0, not encode;1,encode.<vo>:0,not call vo;1,call vo.(VI->VPSS->IVE->VGS->[VENC_H264]->[VO_HDMI]).\n");
printf("\t 1)Gmm,<encode>:0, not encode;1,encode.<vo>:0,not call vo;1,call vo.(VI->VPSS->IVE->VGS->[VENC_H264]->[VO_HDMI]).\n");
printf("\t 2)Occlusion detected.(VI->VPSS->IVE->VO_HDMI).\n");
printf("\t 3)Motion detected.(VI->VPSS->IVE->VGS->VO_HDMI).\n");
printf("\t 4)Canny,<complete>:0, part canny;1,complete canny.(FILE->IVE->FILE).\n");
printf("\t 5)Gmm2.(FILE->IVE->FILE).\n");
printf("\t 6)MemoryTest.(FILE->IVE->FILE).\n");
printf("\t 7)Sobel.(FILE->IVE->FILE).\n");
printf("\t 8)Ann.(FILE->IVE->STDIO).\n");
printf("\t 9)St Lk.(FILE->IVE->FILE).\n");
printf("\t a)Svm.(FILE->IVE->STDIO).\n");
printf("\t b)Cnn.(FILE->IVE->STDIO).\n");
关于 yuv 文件的工具
海思的图片格式为 yuv,如果我们想测试自己的图片那就要把文件格式转换为 yuv
- 海思提供的代码
参考文档是在 Hi3519A V100R001C02SPC010\ReleaseDoc\zh\01.software\pc\DEC_LIB 目录下的
MJPEG PC解码库软件API参考.pdf
对应的代码是 Hi3519A V100R001C02SPC010\Hi3519A V100R001C02SPC010\01.software\pc\DEC_LIB 目录下的Hi_MJPEG_DEC_LIB_V1.0.0.6.rar
,程序的2个命令行参数分别是输入的文件名和输出的文件名。 -
使用 ffmpeg
参考文档 【[FFMPE系列](https://www.ebaina.com/articles/140000003068 "FFMPE系列")】之FFMPEG常用命令
安装 ffmpeg
apt install ffmpeg
将 MP4 视频转换为 yuv 格式文件(如果有需要也可以把 gray 改成 yuv420p 等其他格式)
ffmpeg -i 1920x1080.mp4 -s 1920x1080 -pix_fmt gray 1920x1080.yuv
播放 YUV 格式文件
ffplay -video_size 1920x1080 -pix_fmt gray -i 1920x1080.yuv
2 运行 sample 代码
编译
- 将
a53_linux
下的mpp
目录全部复制到 nfs 服务器中。 - 执行以下命令:
cd sample
source /etc/profile
export LC_ALL=C
make
- 等待编译完成
- 在开发板上挂载 nfs
mount -t nfs xxx.xxx.xxx.xxx:/nfs /nfsroot -o nolock
(更新) 这个命令连接不是很稳定 换成mount -t nfs -o nolock -o tcp -o rsize=32768,wsize=32768 xxx.xxx.xxx.xxx:/nfs /mnt
- 板子加载驱动
cd /nfsroot/mpp/ko
./load3519av100 -i -sensor0 imx334
执行程序
cd /nfsroot/mpp/sample/svp/ive
./sample_ive_main 4 1
效果如下:/nfsroot/mpp/sample/svp/ive # ./sample_ive_main Usage : ./sample_ive_main <index> [complete] [encode] [vo] index: 0)BgModel,<encode>:0, not encode;1,encode.<vo>:0,not call vo;1,call vo.(VI->VPSS->IVE->VGS->[VENC_H264]->[VO_HDMI]). 1)Gmm,<encode>:0, not encode;1,encode.<vo>:0,not call vo;1,call vo.(VI->VPSS->IVE->VGS->[VENC_H264]->[VO_HDMI]). 2)Occlusion detected.(VI->VPSS->IVE->VO_HDMI). 3)Motion detected.(VI->VPSS->IVE->VGS->VO_HDMI). 4)Canny,<complete>:0, part canny;1,complete canny.(FILE->IVE->FILE). 5)Gmm2.(FILE->IVE->FILE). 6)MemoryTest.(FILE->IVE->FILE). 7)Sobel.(FILE->IVE->FILE). 8)Ann.(FILE->IVE->STDIO). 9)St Lk.(FILE->IVE->FILE). a)Svm.(FILE->IVE->STDIO). b)Cnn.(FILE->IVE->STDIO). /nfsroot/mpp/sample/svp/ive # ./sample_ive_main 4 1 [SAMPLE_IVE_Canny]-219: Process success!
此时在 data/output/canny 里已经生成了经过边缘检测处理后的图像。 使用 yuvplayer 打开看一下效果 :D
- 将
- 分享
- 举报
-
浏览量:1430次2023-06-29 09:27:40
-
浏览量:1611次2020-08-05 20:33:33
-
浏览量:3098次2020-07-29 10:00:03
-
浏览量:1181次2024-02-22 15:52:02
-
浏览量:3139次2020-08-05 20:32:31
-
浏览量:3573次2020-07-27 15:19:53
-
浏览量:2826次2020-08-10 09:28:54
-
浏览量:4469次2020-07-30 10:26:53
-
浏览量:1323次2024-01-25 16:21:59
-
浏览量:2838次2022-11-02 13:51:26
-
浏览量:812次2023-07-05 10:12:20
-
浏览量:4448次2020-07-31 13:45:09
-
浏览量:1348次2023-11-04 15:07:11
-
浏览量:3508次2020-07-30 10:36:08
-
浏览量:3003次2020-07-30 10:40:24
-
2024-01-06 10:44:04
-
浏览量:4257次2020-08-10 09:16:13
-
2024-02-18 18:17:05
-
浏览量:724次2024-02-05 17:05:51
-
广告/SPAM
-
恶意灌水
-
违规内容
-
文不对题
-
重复发帖
merz
感谢您的打赏,如若您也想被打赏,可前往 发表专栏 哦~
举报类型
- 内容涉黄/赌/毒
- 内容侵权/抄袭
- 政治相关
- 涉嫌广告
- 侮辱谩骂
- 其他
详细说明
学到了,谢谢大佬分享