中文|English
本样例为大家学习昇腾软件栈提供参考,非商业目的!
本README只提供命令行方式运行样例的指导,如需在Mindstudio下运行样例,请参考Mindstudio运行视频样例wiki。
功能:使用摄像头拍摄照片或视频。
样例输入:摄像头(树莓派V1.3版本Camera,暂时只支持到15fps;树莓派V2.1版本Camera,暂时只支持到20fps)
样例输出:presenter界面展现推理结果,或者数据保存至本地。
请检查以下条件要求是否满足,如不满足请按照备注进行相应处理。如果CANN版本升级,请同步检查第三方依赖是否需要重新安装(5.0.4及以上版本第三方依赖和5.0.4以下版本有差异,需要重新安装)。
条件 | 要求 | 备注 |
---|---|---|
CANN版本 | >=5.0.4 | 请参考CANN样例仓介绍中的安装步骤完成CANN安装,如果CANN低于要求版本请根据版本说明切换samples仓到对应CANN版本 |
硬件要求 | Atlas200DK | 摄像头样例仅在Atlas200D测试及运行,产品说明请参考硬件平台 |
第三方依赖 | opencv | 请参考第三方依赖安装指导(C++样例)完成对应安装 |
可以使用以下两种方式下载源码包,请选择其中一种进行源码准备。
- 命令行方式下载(下载时间较长,但步骤简单)。
注:如果需要切换到其它tag版本,以v0.5.0为例,可执行以下命令。
# 开发环境,非root用户命令行中执行以下命令下载源码仓。 cd ${HOME} git clone https://github.com/Ascend/samples.git
git checkout v0.5.0
- 压缩包方式下载(下载时间较短,但步骤稍微复杂)。
注:如果需要下载其它版本代码,请先请根据前置条件说明进行samples仓分支切换。# 1. samples仓右上角选择 【克隆/下载】 下拉框并选择 【下载ZIP】。 # 2. 将ZIP包上传到开发环境中的普通用户家目录中,【例如:${HOME}/ascend-samples-master.zip】。 # 3. 开发环境中,执行以下命令,解压zip包。 cd ${HOME} unzip ascend-samples-master.zip
-
修改present相关配置文件。
将样例目录下scripts/param.conf中的 presenter_server_ip、presenter_view_ip 修改为开发环境中可以ping通运行环境的ip地址。- 开发环境中使用ifconfig查看可用ip。
- 在开发环境中将scripts/param.conf中的 presenter_server_ip、presenter_view_ip 修改为该ip地址。
说明:
- 1.开发环境和运行环境分离部署,一般使用配置的虚拟网卡ip,例如192.168.1.223。
- 2.开发环境和运行环境合一部署,一般使用200dk固定ip,例如192.168.1.2。
-
切换到ascendcamera目录,创建目录用于存放编译文件,例如,本文中,创建的目录为 build/intermediates/host。
cd $HOME/samples/cplusplus/level1_single_api/5_200dk_peripheral/ascendcamera mkdir -p build/intermediates/host
-
切换到 build/intermediates/host 目录,执行cmake生成编译文件。
cd build/intermediates/host make clean cmake ../../../src -DCMAKE_CXX_COMPILER=aarch64-linux-gnu-g++ -DCMAKE_SKIP_RPATH=TRUE
-
执行make命令,生成的可执行文件main在 ascendcamera/out 目录下。
make
注:开发环境与运行环境合一部署,请跳过步骤1,直接执行步骤2即可。
- 执行以下命令,将开发环境的 ascendcamera 目录上传到运行环境中,例如 /home/HwHiAiUser,并以HwHiAiUser(运行用户)登录运行环境(Host)。
# 【xxx.xxx.xxx.xxx】为运行环境ip,200DK在USB连接时一般为192.168.1.2。 scp -r $HOME/samples/cplusplus/level1_single_api/5_200dk_peripheral/ascendcamera [email protected]:/home/HwHiAiUser ssh [email protected]
- 运行可执行文件。
- 如果是开发环境与运行环境合一部署,执行以下命令切换目录。
cd $HOME/samples/cplusplus/level1_single_api/5_200dk_peripheral/ascendcamera/out
- 如果是开发环境与运行环境分离部署,执行以下命令切换目录。
cd $HOME/ascendcamera/out
./main -i -c 1 -o ./output/filename.jpg --overwrite
- 如果是开发环境与运行环境合一部署,执行以下命令切换目录。
参数说明:
- -i:代表获取jpg格式的图片。
- -c:表示摄像头所在的channel,此参数有“0”和“1”两个选项,“0“对应“Camera1“,“1“对应“Camera2“,如果不填写,默认为“0”。
- -o:表示文件存储位置,此处output为本地已存在的文件夹名称,filename.jpg为保存的图片名称,可用户自定义。
- --overwrite:覆盖已存在的同名文件。
运行完成后,会在运行环境的命令行中打印出运行结果,并在将运行结果保存在$HOME/ascendcamera/out/output。
注:开发环境与运行环境合一部署,请跳过步骤1,直接执行步骤2即可。
- 执行以下命令,将开发环境的 ascendcamera 目录上传到运行环境中,例如 /home/HwHiAiUser,并以HwHiAiUser(运行用户)登录运行环境(Host)。
# 【xxx.xxx.xxx.xxx】为运行环境ip,200DK在USB连接时一般为192.168.1.2。 scp -r $HOME/samples/cplusplus/level1_single_api/5_200dk_peripheral/ascendcamera [email protected]:/home/HwHiAiUser ssh [email protected]
- 运行可执行文件。
- 如果是开发环境与运行环境合一部署,执行以下命令切换目录。
cd $HOME/samples/cplusplus/level1_single_api/5_200dk_peripheral/ascendcamera/out
- 如果是开发环境与运行环境分离部署,执行以下命令切换目录。
cd $HOME/ascendcamera/out
切换目录后,执行以下命令运行样例。cd $HOME/ascendcamera/out mkdir output
./main
- 如果是开发环境与运行环境合一部署,执行以下命令切换目录。
运行完成后,会在运行环境的命令行中打印出运行结果,并在将运行结果保存在$HOME/ascendcamera/out/output。
说明:
- 以下出现的xxx.xxx.xxx.xxx为运行环境ip,200DK在USB连接时一般为192.168.1.2。
- 执行以下命令,将开发环境的 ascendcamera 目录上传到运行环境中,例如 /home/HwHiAiUser。
# 开发环境与运行环境合一部署,请跳过此步骤! scp -r $HOME/samples/cplusplus/level1_single_api/5_200dk_peripheral/ascendcamera [email protected]:/home/HwHiAiUser
- 启动presenterserver并登录运行环境。
- 开发环境中执行以下命令启动presentserver。
cd $HOME/samples/cplusplus/level1_single_api/5_200dk_peripheral/ascendcamera bash scripts/run_presenter_server.sh
- 执行以下命令登录运行环境。
# 开发环境与运行环境合一部署,请跳过此步骤! ssh [email protected]
- 开发环境中执行以下命令启动presentserver。
- 运行可执行文件。
- 如果是开发环境与运行环境合一部署,执行以下命令切换目录。
cd $HOME/samples/cplusplus/level1_single_api/5_200dk_peripheral/ascendcameraout
- 如果是开发环境与运行环境分离部署,执行以下命令切换目录。
cd $HOME/ascendcamera/out
参数说明:./main -v -c 1 -t 60 --fps 20 -w 704 -h 576 -s ip:xxxx/presentername
- -v:代表获取摄像头的视频,用来在Presenter Server端展示。
- -c:表示摄像头所在的channel,此参数有0”和1两个选项,0对应Camera0,1对应Camera1,如果不填写,默认为0。
- -t:表示获取60s的视频文件,如果不指定此参数,则获取视频文件直至程序退出。
- -fps:表示存储视频的帧率,取值范围为1~20,如果不设置此参数,则默认存储的视频帧率为10fps。
- -w:表示存储视频的宽。
- -h:表示存储视频的高。
- -s:后面的ip值为启动Presenter Server时文件scripts/param.conf中presenter_server_ip的IP地址,xxxx为Ascendcamera应用对应的Presenter Server服务器的端口号。
- presentername:为在Presenter Server端展示的“View Name“,用户自定义,需要保持唯一,只能为大小写字母、数字、“_”的组合,位数3~20。
- 如果是开发环境与运行环境合一部署,执行以下命令切换目录。
- 打开presentserver网页界面(打开启动Presenter Server服务时提示的URL即可)。
- 等待Presenter Agent传输数据给服务端,单击“Refresh“刷新,当有数据时相应的Channel 的Status变成绿色。
- 单击右侧对应的View Name链接,查看结果。
请参考常见问题定位对遇到的错误进行排查。如果wiki中不包含,请在samples仓提issue反馈。