環境配置

Setsuna00發表於2024-07-12

配置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)連結,檢視結果。

相關文章