十四、在Atlas 200DK上玩转摄像头

200DK有两个摄像头的接口,早在两年前,张小白就在早期CANN版本中试过摄像头:

Atlas 200DK系统折腾纪实:(1)论图片及18.04.1的诞生​bbs.huaweicloud.com/blogs/194291

当然也要注意里面的坑,比如说接口中排线的方向等等。

我们下面看看,在CANN 5.0.4 alpha005的版本对摄像头的支持如何:

1、在200DK上执行ascend camera例程

根据:https://gitee.com/ascend/samples/tree/v0.6.0/cplusplus/level1_single_api/5_200dk_peripheral/ascendcamera

cd samples/cplusplus/level1_single_api/5_200dk_peripheral/ascendcamera

mkdir -p build/intermediates/host

cd build/intermediates/host

cmake ../../../src -DCMAKE_CXX_COMPILER=aarch64-linux-gnu-g++ -DCMAKE_SKIP_RPATH=TRUE

make

cd $HOME/samples/cplusplus/level1_single_api/5_200dk_peripheral/ascendcamera/out

mkdir output

摄像头1:

./main -i -c 1 -o ./output/filename.jpg --overwrite

摄像头0:

./main -i -c 0 -o ./output/filename0.jpg --overwrite

从宿主机将结果文件拷贝回来:

mkdir camera

cd camera

scp HwHiAiUser@192.168.1.2:~/samples/cplusplus/level1_single_api/5_200dk_peripheral/ascendcamera/out/output/*.jpg .

打开看看:

说明这两个摄像头拍照都没(太大的)问题。(尽管这个带夜视的廉价摄像头是一如既往的发红。。)

2、在200DK上执行face_detection_camera例程

根据 https://gitee.com/ascend/samples/tree/v0.6.0/cplusplus/level2_simple_inference/2_object_detection/face_detection_camera

执行以下脚本下载caffe模型,并转换为om模型:

cd ${HOME}/samples/cplusplus/level2_simple_inference/2_object_detection/face_detection_camera/model
wget https://modelzoo-train-atc.obs.cn-north-4.myhuaweicloud.com/003_Atc_Models/AE/ATC%20Model/facedection/face_detection_fp32.caffemodel
wget https://modelzoo-train-atc.obs.cn-north-4.myhuaweicloud.com/003_Atc_Models/AE/ATC%20Model/facedection/face_detection.prototxt
wget https://c7xcode.obs.cn-north-4.myhuaweicloud.com/models/face_detection_camera/insert_op.cfg

atc --output_type=FP32 --input_shape="data:1,3,300,300" --weight=./face_detection_fp32.caffemodel --input_format=NCHW --output=./face_detection --soc_version=Ascend310 --insert_op_conf=./insert_op.cfg --framework=0 --save_original_model=false --model=./face_detection.prototxt

编译:

cd ~/samples/cplusplus/level2_simple_inference/2_object_detection/face_detection_camera/scripts

bash ./sample_build.sh

运行:

bash sample_run.sh

具体报错如下:

HwHiAiUser@davinci-mini:~/samples/cplusplus/level2_simple_inference/2_object_detection/face_detection_camera/scripts$ bash sample_run.sh
[INFO] The sample starts to run
Current environment valid ip list:127.0.0.1192.168.199.204
Please choose one to show the presenter in browser:192.168.199.204
[INFO]  Acl init ok
[INFO]  Open device 0 ok
[INFO]  Use default context currently
content_type config string:1
[INFO]  dvpp init resource ok
[INFO]  Load model ../model/face_detection.om success
[INFO]  Create model description success
[INFO]  Create model(../model/face_detection.om) output success
[INFO]  Init model ../model/face_detection.om success
[INFO]  No specified carmera id, use camera0
[ERROR]  Set camera fps failed
[ERROR]  Set camera0 property failed
[ERROR]  Open camera failed
[2022-04-23 18:24:44][LIBMEDIA_ERROR] CloseCamera failed!!! Camera[0] is not opened
[ERROR]  Close camera 0 failed
[INFO]  Unload model ../model/face_detection.om success
[INFO]  destroy context ok
[INFO]  Reset device 0 ok
[INFO]  Finalize acl ok
[INFO] The program runs successfully, Please visit http://192.168.199.204:7007 for display server!
Enter any command to stop the application:kill existing project process: kill -9 3147.
/home/HwHiAiUser/Ascend/thirdpart/aarch64/common/sample_common.sh: line 40: kill: (3147) - No such process
ERROR: kill project process failed.

经过专家指点,是目前摄像头相关底层代码的fps设置有误:

当然,专家的指点只是一个方向,代码具体的实现张小白仔细看了一下,face_detection_camera 调用的是acllite。

首先,main.cpp调用了 ~/samples/cplusplus/common/acllite/src/AclLiteVideoProc.cpp:

然后,位于 /home/HwHiAiUser/samples/cplusplus/common/acllite/src 的 AclLiteVideoProc.cpp 调用了CameraCapture:

由于不知道它调了哪个,所以两边都加了个日志。

最后在 ./samples/cplusplus/common/acllite/src/CameraCapture.cpp 的 SetProperty设置属性:

张小白对于代码逻辑都没改,只是加了几行日志。

然后

cd ~/samples/cplusplus/common/acllite

make

make install

再回到工程目录:

cd ~/samples/cplusplus/level2_simple_inference/2_object_detection/face_detection_camera/scripts

bash sample_build.sh

bash sample_run.sh

此时,代码正在运行,浏览器打开 192.168.199.204:7007

出现了Presenter Server的页面,点击person可以打开:

可以看到,视频中的人脸可以被成功识别。

(未完待续)

玩转Atlas200DK(十四)玩转摄像头相关推荐

  1. 【正点原子FPGA连载】第四十四章MT9V034摄像头HDMI显示实验 -摘自【正点原子】新起点之FPGA开发指南_V2.1

    1)实验平台:正点原子新起点V2开发板 2)平台购买地址:https://detail.tmall.com/item.htm?id=609758951113 2)全套实验源码+手册+视频下载地址:ht ...

  2. 快速删除所有空值:汪琪玩Excel第十四招

    大家都知道, Excel 是拿来做表格的.但表格中的数据一多,就可能会出现各种各样的五花八门的数据,比如空值.但很显然,空值不会是我们需要的,那么怎么样快速将它们全部删除呢?这还是需要技巧滴,今天,汪 ...

  3. 用代码来玩三八二十四扑克牌游戏(C++)

    1.输入输出约定 输入四个字符,分别代表四个扑克牌,约定:0字符为10,JQK分别为11 12 13. 输出运算过程,如果没有无解,输出 no ans. 2.运行截图 (1)有答案的 (2)无答案的 ...

  4. linux 正点原子ov5640_【正点原子FPGA连载】第二十四章OV5640摄像头HDMI显示-摘自【正点原子】领航者 ZYNQ 之嵌入式开发指南 (amobbs.com 阿莫电子论坛)...

    [code]#----------------------摄像头接口的时钟--------------------------- #72M create_clock -period 13.888 -n ...

  5. 【Microsoft Azure 的1024种玩法】七十四.五分钟在Azure Virtual Machines中快速部署一套软件项目管理及自动构建工具

    [简介] Apache Maven由 Apache 软件基金会所提供的一个软件项目管理及自动构建工具,Maven 为开发者提供了一套完整的构建生命周期框架.开发团队几乎不用花多少时间就能够自动完成工程 ...

  6. 【Microsoft Azure 的1024种玩法】二十四.通过Azure Front Door 的 Web 应用程序防火墙来对 OWASP TOP 10 威胁进行防御

    [简介] 我们都知道像 SQL 注入.跨站点脚本攻击(XSS)之类的恶意攻击以及 OWASP 发现的十大威胁都可能会导致服务中断或数据丢失,让 Web 应用程序所有者受到巨大威胁.那么如何有效的解决O ...

  7. 【Microsoft Azure 的1024种玩法】五十四. 十分钟快速上手创建部署Azure speech服务

    [简介] Azure语音服务是Microsoft提供稳定可靠的云通信服务,其在单个 Azure 订阅中统合了语音转文本.文本转语音以及语音翻译功能,我们可以通过各种方式(语音 CLI.语音 SDK.S ...

  8. 【Microsoft Azure 的1024种玩法】十五.通过Web浏览器对Auzre VM 服务器运维管理

    [简介] Apache Guacamole是无客户端远程桌面网关.它支持标准协议,例如VNC,RDP和SSH.我们称其为无客户端,因为不需要插件或客户端软件.多亏了HTML5,在服务器上安装了鳄梨调味 ...

  9. 教你玩转九四玩手游联运系统

    手游联运系统简介 简单来说,手游联运系统就像是一个软件系统,根据软件系统内部或后台的功能,可以轻松实现手游运营平台的搭建.从接入游戏.活动运营.宣传推广再到用户充值等等,都可以根据自己喜好来搭建.手游 ...

最新文章

  1. Android开发--Spinner控件的使用
  2. 一位40岁“老程序员”的经历,给你们说一些我的真实想法!
  3. P2217-[HAOI2007]分割矩阵【dfs,记忆化搜索】
  4. 论文笔记(Attentive Recurrent Social Recommendation)
  5. ajax preview,In jQuery, using ajaxSend to preview the url built
  6. ORACLE SQL获取时间字段
  7. jQuery+toggle
  8. python黑网站_Python简单实现HTTP本地代理转发
  9. 大型网页游戏开发流程
  10. 仿iReader 阅读器(swift)
  11. 计算机内存调用优化,Memory Cleaner——简单好用的Windows内存优化工具
  12. java sockets_Java Sockets
  13. Flutter 使用 ESC/POS蓝牙或以太网库控制热敏打印机
  14. Web安全漏洞及安全防护
  15. 基于linux的在线英汉词典(带源码)
  16. docker安装mysql并挂载配置文件和修改密码
  17. 【读书笔记】金字塔原理-学习总结
  18. Adnroid 自定义流式布局
  19. 动态拨号vps服务器
  20. 2020-10-30

热门文章

  1. 【Python 爬虫】简单的网页爬虫
  2. Git史上最详细教程(详细图解)
  3. 人口生育老龄化政策数据表(1971-2023年)
  4. 前5名最佳SQL数据库恢复软件
  5. C/C++物业费管理系统[2023-02-13]
  6. 基于Python的多功能本地视频播放系统
  7. 03 | ssh基础知识,连接服务器的那些事
  8. Linux安装和使用
  9. oracle 数据库定时自动备份
  10. 定义结构体变量的三种方式