环境配置

news/2024/9/21 2:39:11/文章来源:https://www.cnblogs.com/qzt2cool/p/18299429

配置c++环境

  • 下载安装第三方依赖(opencv,ffmpeg,accllite,presentagent)
  • 配置摄像头
  • 配置i2c
  • 下载测试代码并检验

准备安装

#下载测试代码
cd ${HOME}  #注意是主目录,不是/home
git clone https://gitee.com/ascend/samples.git
#如果无法git clone,则本地下载再上传即可#解压下载的包
unzip ascend-samples-master.zip #名字可能有出入,以实际为准
#如果unzip不行的化,用jar试试,注意解压时终端的路径,再${home}里

# 以安装用户在任意目录下执行以下命令,打开.bashrc文件。
vi ~/.bashrc  # 如果.bashrc中没有对应内容,在文件最后一行后面添加如下内容,设置必要的环境变量。
export CPU_ARCH=`arch`
export THIRDPART_PATH=${HOME}/Ascend/thirdpart/${CPU_ARCH}  #代码编译时链接第三方库
export LD_LIBRARY_PATH=${HOME}/Ascend/thirdpart/${CPU_ARCH}/lib:$LD_LIBRARY_PATH  #运行时链接库文件
export INSTALL_DIR=${HOME}/Ascend/ascend-toolkit/latest #CANN软件安装后文件存储路径
#注意!!:latest需要按实际情况更改!不做修改会导致acllite库的编译报错# 执行命令保存文件并退出。
:wq!  # 执行命令使其立即生效。 
source ~/.bashrc # 创建第三方依赖文件夹
mkdir -p ${THIRDPART_PATH}# 拷贝公共文件到第三方路径中
cp -r ${HOME}/samples/common ${THIRDPART_PATH}

打开终端,连接Atlas200DK,打开.bashrc文件,将环境变量中的latest都改为5.0.4.alpha005(这里5.0.4.alpha005需要根据实际下载的CANN版本进行修改)

200DK场景还需要执行以下命令拷贝media_mini等so文件以及相关头文件,满足摄像头样例编译需要。(普通用户可能权限不够需要进入root用户进行)

mkdir -p ${INSTALL_DIR}/driver
cp /usr/lib64/libmedia_mini.so ${INSTALL_DIR}/driver/
cp /usr/lib64/libslog.so ${INSTALL_DIR}/driver/
cp /usr/lib64/libc_sec.so ${INSTALL_DIR}/driver/
cp /usr/lib64/libmmpa.so ${INSTALL_DIR}/driver/
cp /usr/local/Ascend/include/peripheral_api.h ${INSTALL_DIR}/driver/

安装opencv

sudo apt-get install libopencv-dev

安装ffmpeg

# 下载ffmpeg并解压
cd ${HOME}
wget http://www.ffmpeg.org/releases/ffmpeg-4.1.3.tar.gz --no-check-certificate
tar -zxvf ffmpeg-4.1.3.tar.gz
cd ffmpeg-4.1.3


 
# 安装ffmpeg
#./configure配置安装会稍微需要一点时间,耐心等待	
./configure --enable-shared --enable-pic --enable-static --disable-x86asm --prefix=${THIRDPART_PATH} 
make -j8
make install


安装acllite

 # 编译并安装acllite
cd ${HOME}/samples/cplusplus/common/acllite/
make -j8 #使用-j8调用cpu的多个核心,加快编译
make install

特别注意!!如果出现以下错误
主要排查两点错误:
1.是否已经修改环境变量中的latest
2.确定cann版本大于等于5.0.4

安装presentagent

# 安装protobuf相关依赖
sudo apt-get install autoconf automake libtool# 下载protobuf源码
cd ${HOME}
git clone -b 3.13.x https://gitee.com/mirrors/protobufsource.git protobuf

 
# 编译安装protobuf
cd protobuf
./autogen.sh
./configure --prefix=${THIRDPART_PATH}
make clean
make -j8
sudo make install# 进入presentagent源码目录并编译
cd ${HOME}/samples/cplusplus/common/presenteragent/proto
${THIRDPART_PATH}/bin/protoc presenter_message.proto --cpp_out=./# 开始编译presentagnet
cd ..
make -j8
make install

配置摄像头(拍照)

1.修改present相关配置文件。

开发环境中使用ifconfig查看可用ip。并在本机环境(win)下ping 该IP,确认可以ping通。 在开发环境中将scripts/param.conf中的 presenter_server_ip、presenter_view_ip 修改为该IP地址。

2.切换到ascendcamera目录,创建目录用于存放编译文件

#例如,本文中,创建的目录为build/intermediates/host
cd ${HOME}/samples/cplusplus/level1_single_api/5_200dk_peripheral/ascendcamera
mkdir -p build/intermediates/host

3.切换到 build/intermediates/host 目录,执行cmake生成编译文件

cd build/intermediates/host 
make clean #第一次执行的话,因为此前没有make过,不用执行本句
cmake ../../../src -DCMAKE_CXX_COMPILER=aarch64-linux-gnu-g++ -DCMAKE_SKIP_RPATH=TRUE

4.执行make命令,生成的可执行文件main在 ascendcamera/out 目录下。

make

5.运行可执行文件

cd $HOME/samples/cplusplus/level1_single_api/5_200dk_peripheral/ascendcamera/out
./main -i -c 1 -o ./filename.jpg --overwrite

参数说明:

-i:代表获取jpg格式的图片。

-c:表示摄像头所在的channel,此参数有“0”和“1”两个选项,“0“对应“Camera1“,“1“对应 “Camera2“,如果不填写,默认为“0”。

-o:表示文件存储位置,此处output为本地已存在的文件夹名称,filename.jpg为保存的图片名 称,可用户自定义。

--overwrite:覆盖已存在的同名文件。

6.查看结果

运行完成后,会在运行环境的命令行中打印出运行结果,并在将运行结果保存在 $HOME/ascendcamera/out

配置摄像头(录像)

1.开发环境中执行以下命令启动presentserver。

cd $HOME/samples/cplusplus/level1_single_api/5_200dk_peripheral/ascendcamera 
bash scripts/run_presenter_server.sh 

2.本机浏览器中:http://192.168.1.2:7003 (7003:端口号以实际提示的为准,:7003如果出现valid的话,改为:7002试试)

3.运行可执行文件

重新打开一个终端,对于开发环境与运行环境合一部署,执行以下命令切换目录。

cd $HOME/samples/cplusplus/level1_single_api/5_200dk_peripheral/ascendcamera/out#切换目录后,执行以下命令运行样例。并将ip和xxxx修改为对应的ip和端口号。
#./main -v -c 1 -t 60 --fps 20 -w 704 -h 576 -s ip:xxxx/presentername./main -v -c 1 -t 60 --fps 20 -w 704 -h 576 -s 192.168.1.2:7003/presentername
#:7003如果出现valid的话,改为:7002

参数说明:

-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 地址, 此处用192.168.1.2 ;xxxx为Ascendcamera应用对应的Presenter Server服务器的端口号,该端 口号动态变换,比如是7002,7003等,可在命令行输出中查看。

presentername:为在Presenter Server端展示的“View Name“,用户自定义,需要保持唯一,只能为 大小写字母、数字、“_”的组合, 位数3~20,此处可以设置为:mypresent。

4.查看结果

打开presentserver网页界面(打开启动Presenter Server服务时提示的URL即可)。

等待Presenter Agent传输数据给服务端,单击“Refresh“刷新,当有数据时相应的Channel 的 Status变成绿色。

单击右侧对应的View Name(mypresent)链接,查看结果。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/742721.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

自己理解的TCP三次握手

### TCP 三次握手过程是怎样的? TCP的建立连接是通过三次握手来进行的。三次握手的过程如下图:说实话这个很好理解,我称之为N字型 首先我们理解到建立连接是一个虚的概念了对吧?那么我们来设计一个可靠的TCP,首先建立连接是必须的吧?相当于我们打电话,总要先说一句喂---wei…

EtherCAT总线耦合器:在欧姆龙Sysmac Studio软件里的配置步骤

EtherCAT总线适配器XD7000作为网络接口,连接主控制器(如PLC)和其他EtherCAT设备,实现实时、高效的数据交换。通过EtherCAT总线耦合器,用户能够将所有设备连接在一个主网络上,并通过一个以太网端口进行控制。EtherCAT总线耦合器能够自动检测和确定不同的设备连接方式,从而…

总结系统IO和标准IO的区别

Linux系统IO:除了open函数之外,其它的函数第一个形参都是文件描述符。对文件进行IO操作:写入和读取操作是没有缓存操作。write因为没有缓存的操作,如果IO操作的数据很多的情况下是不建议使用,特别是那种多媒体数据文本文档数据。因为没有缓存的操作,如果IO操作的数据不多的…

STM32驱动-DHT11(温湿度模块)

STM32驱动-DHT11(温湿度模块) 一、DHT11模块简介 DHT11是一款含有已校准数字信号输出的温湿度复合传感器,它应用专用的数字模块采集技术和温湿度传感技术,确保产品具有极高的可靠性和卓越的长期稳定性。传感器包括一个电阻式感湿元件和一个NTC测温元件,并与一个高性能8位单片…

输出的魅力

关于一份代码不同输出的不同结果。。(luogu能A) printf快写正常cout解绑cout就离谱

大厂性能优化的10大顶级方案 (万字图文史上最全)

文章很长,且持续更新,建议收藏起来,慢慢读!疯狂创客圈总目录 博客园版 为您奉上珍贵的学习资源 : 免费赠送 :《尼恩Java面试宝典》 持续更新+ 史上最全 + 面试必备 2000页+ 面试必备 + 大厂必备 +涨薪必备 免费赠送 :《尼恩技术圣经+高并发系列PDF》 ,帮你 实现技术自由,…

[学习笔记] 长链剖分 - 图论

长链剖分 字面意思,不同于重链剖分,每次选取最长的树链进行剖分,直到剖完为止。其原理和重链剖分相似。建议学习长链剖分前,先学习 重链剖分。 重链剖分能做的,长链剖分都能做(当然不包括找重儿子),长链剖分还能以 \(O(nlogn)-O(1)\) 的优秀复杂度找到 \(k\) 级祖先(当…

腾讯云加速企业和个人开发创新公开课直播预告

直播预告:07/18(周四)15:00-16:00 随着人工智能与大模型的蓬勃发展,我们正步入一个由技术驱动的创新时代。Al不仅是技术革新的先锋,更是每位程序员不可或缺的“搭子”,掌握AI工具的创造、加工与使用技巧,成为广大从业者当下的挑战之一。 腾讯云高性能应用服务HAl,打造一系…

CSP提高组模拟1

T1很明显的最短路floyed算法,但是这个最大的点权却不是很好维护,但我们可以想到枚举最大的点权其实就可以相当于枚举floyed中的k,那么这时我们要对k进行一个排序操作,使得我们每次枚举的中转点k为枚举经过路径的点权最大的点从而达到同时走最短路并维护点权最大值。点击查看…

【服务器搭建】为啥虚拟主机不能用IP直接访问?

需求 直接用IP访问了自己在线上的网站,结果发现被拒绝❓因为,IP映射的是一整台服务器,而服务器上可以部署的的服务是多种多样的。除了web网站服务,还可能有ftp文件传输服务,mail邮箱服务等。这时仅仅给出IP是不够的,需要在IP后添加端口号作进一步区分。 当然,如果用浏览…

应急响应命令(Linux)

netstat -anultp 查看进程(用来判断开启了哪些服务等)ls -al 查看目录下所有文件,包括隐藏文件 ls -alt 查看目录下所有文件,包括隐藏文件,按时间顺序排序cat access.log | wc -l 查看文件的行数 wc -l是查看文件行数的意思cat -e access.log | grep 1.php 查…

U7-11课综合练习+12课阶段测评练习——复习练习题目

[2的n次方] 高精度乘法复习资料:https://www.cnblogs.com/jayxuan/p/18287673重复做以下操作 $n $ 次:对每一位乘以 $2 $,然后进位。(当然也可以使用正常的高精度乘法)【参考代码】 #include<bits/stdc++.h> using namespace std;int ans[59]; int main() {int n;ci…