香橙派華為昇騰CANN架構編譯opencv4.9

香橙派華為升騰AI盒子

為啥要編譯opencv4.9.0, 因為在4.9.0 中增加了華為昇騰CANN的外接開發庫,下圖為盒子外觀,此次一接到這個盒子,立刻開始開箱操作,首先就是要編譯opencv4.9,以前在香橙派3588 的盒子中,也是同樣的操作,不過當時編譯的是4.6
在這里插入圖片描述

華為昇騰CANN架構的優點我也不多說,昇騰AI視頻轉碼解決方案搭載昇騰310處理器,硬件自帶編解碼及AI處理能力,編解碼場景性價比提升最高可達75%,為編解碼場景提供高性價比算力,AI 前面一定是視頻解碼后進行識別,同時轉編碼發送出去,利用gstreamer,ffmpeg,都可以編解碼,但是如何最大化利用硬件資源,需要我們探索。

升級

以下這兩部可能需要一些時間,升級時會找到華為云

sudo apt update
sudo apt upgrade

過程中可能會安裝一些開發包,比如下面的tbb,不過下面的命令還是執行一下,根據我觀察,ffmpeg等庫都會安裝,需要注意的是一定要把opencv-gui的界面關閉,如果我們是一邊安裝升級操作,一邊編譯,達不到效果,因為升級改變了很多庫和環境變量。

安裝eigen

eigen是一個

sudo apt-get install libeigen3-dev

安裝tbb開發包

TBB全稱Threading Building Blocks,是Intel針對基于多核處理器進行軟件開發而創建的一套C++模板庫,核心作用是用來在任務處理中做多線程加速,所以一定要安裝tbb,以使用多核并發能力。

sudo apt-get install libtbb-dev

寫一個測試程序

#include <tbb/tbb.h>
#include <iostream>int main() {tbb::task_scheduler_init init; // 初始化TBBtbb::parallel_for(0, 10, [](int i)std::cout << "Hello from thread " << std::this_thread::get_id() << " with index " << i << std::endl;});return 0;
}

安裝gstreamer 開發包

sudo apt install libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev

安裝cmake的界面版本

sudo apt-get install cmake-qt-gui

配置好以下界面

在這里插入圖片描述

WITH-CANN

??重點來了,昇騰為后端的圖像處理接口封裝在 OpenCV 擴展包(opencv_contrib)的 cannops 模塊中,包括圖像矩陣的算術運算、通道拆分合并、圖片裁剪、翻轉、調整大小、轉置等圖像處理的 Python 和 C++ 接口,處理精度與 CPU 后端的計算結果相同。
在這里插入圖片描述
在這里插入圖片描述CANN 的勾打上以后,ascend 中的toolkit包會找到

開始編譯

在這里插入圖片描述

CANN c++ 示例

#include <iostream>
#include <opencv2/imgcodecs.hpp>
#include <opencv2/cann.hpp>
#include <opencv2/cann_interface.hpp>int main(int argc, char* argv[])
{cv::CommandLineParser parser(argc, argv,"{@input|puppy.png|path to input image}""{@output|output.png|path to output image}""{help||show help}");parser.about("This is a sample for image processing with Ascend NPU. \n");if (argc != 3 || parser.has("help")){parser.printMessage();return 0;}std::string imagePath = parser.get<std::string>(0);std::string outputPath = parser.get<std::string>(1);// read input image and generate guass noise//! [input_noise]cv::Mat img = cv::imread(imagePath);// Generate gauss noise that will be added into the input imagecv::Mat gaussNoise(img.rows, img.cols, img.type());cv::RNG rng;rng.fill(gaussNoise, cv::RNG::NORMAL, 0, 25);//! [input_noise]// setup cann//! [setup]cv::cann::initAcl();cv::cann::setDevice(0);//! [setup]//! [image-process]cv::Mat output;// add gauss noise to the imagecv::cann::add(img, gaussNoise, output);// rotate the image with a certain mode (0, 1 and 2, correspond to rotation of 90, 180 and 270// degrees clockwise respectively)cv::cann::rotate(output, output, 0);// flip the image with a certain mode (0, positive and negative number, correspond to flipping// around the x-axis, y-axis and both axes respectively)cv::cann::flip(output, output, 0);//! [image-process]cv::imwrite(outputPath, output);//! [tear-down-cann]cv::cann::resetDevice();cv::cann::finalizeAcl();//! [tear-down-cann]return 0;
}

可以用下面的方式來編譯
g++ pkg-config opencv --cflags test.cpp -o test pkg-config opencv --libs

其他總結

這塊小盒子本身帶了一些例子,不過我們最需要的是如何發揮他的關鍵,就是硬件資源調度,在教育、體育、安防、交通、醫療等領域中,AI檢測應用發揮著至關重要的作用,比如在各種安全分析,各種體育訓練時的實時人體關鍵點檢測可以精確、實時地捕捉運動員的動作,在安防應用場景中,識別各種異常現象和異常行為或特定姿態,以達到場景安全防控的目的。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/18285.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/18285.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/18285.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

大模型應用:LLM基本原理及應用場景

1.背景 23年以來&#xff0c;隨著OpenAI公司的ChatGPT橫空出世&#xff0c;大模型一詞開始火爆全球。國內外以OpenAI、Google、百度、阿里、字節等大廠為代表&#xff0c;相繼推出一系列大模型及其應用&#xff0c;涉及社交、問答、代碼助手等多個方面。 目前主流的大模型及產…

Echarts - 多個頁面內有N個 echarts 圖表,封裝組件 CommonEcharts 快捷實現

目錄 子組件父組件使用注意 option 文件效果展示相關數據處理&#xff08;代碼備份 - 可不看&#xff09;數據處理后頁面展示 子組件 CommonEcharts.vue <template><div><div v-for"id in domId" :id"id" :key"id" class"…

代碼隨想錄算法訓練營Day53 | 1143.最長公共子序列、1035.不相交的線、53. 最大子序和 | Python | 個人記錄向

本文目錄 1143.最長公共子序列做題看文章 1035.不相交的線做題看文章 53. 最大子序和做題看文章 以往忽略的知識點小結個人體會 1143.最長公共子序列 代碼隨想錄&#xff1a;1143.最長公共子序列 Leetcode&#xff1a;1143.最長公共子序列 做題 無思路。 看文章 dp[i][j]&…

基于事件的架構工作機制和相關產品

基于事件的架構 基于事件的架構可否這樣理解&#xff0c;每個事件相當于傳統API的一次函數調用請求&#xff0c;比如Add(123,456)。區別在于&#xff0c;基于事件的架構只是把這個請求發出&#xff0c;并不急于得到結果&#xff0c;而是等合適的子系統處理完這個請求&#xff…

go select

select 是與 switch 相似的控制結構&#xff0c;與 switch 不同的是&#xff0c;select 中雖然也有多個 case&#xff0c;但是這些 case 中的表達式必須都是 channel 的收發操作。 select 能夠讓 goroutine 同時等待多個 channel 可讀或者可寫&#xff0c;在多個 channel 狀態改…

使用awk對nginx access.log進行統計分析

nginx可以配置訪問日志&#xff0c;如果我們要對日志文件進行統計分析&#xff0c;在linux環境下可以借助awk命令完成。 日志格式配置如下所示&#xff1a; log_format access_json {"timestamp":"$time_iso8601","host":"$server_addr&qu…

Flutter 中的 AnimatedOpacity 小部件:全面指南

Flutter 中的 AnimatedOpacity 小部件&#xff1a;全面指南 在Flutter中&#xff0c;動畫是一種為用戶提供視覺反饋和增強用戶體驗的強大工具。AnimatedOpacity是Flutter動畫庫中的一個組件&#xff0c;它允許你通過改變一個組件的透明度來創建淡入和淡出效果。本文將詳細介紹…

章十五、Maven —— Maven 簡介、Maven 開發環境搭建、命令、打包案例

一、 Maven 簡介 Maven 是 Apache 軟件基金會的一個開源項目&#xff0c;是一個優秀的項目構建工具&#xff0c;它用來幫助開發者管理項目中的 jar&#xff0c;以及 jar 之間的依賴關系&#xff08;在A.jar文件中用到了B.jar&#xff09;、完成項目的編譯&#xff08;.java -&g…

Compose Button移除水波紋效果

一、背景 在使用Compose實現Button按鈕時&#xff0c;設計要求移除按鈕的水波紋效果&#xff0c;只保留按壓效果&#xff0c;經查Compose1.4.3版本中&#xff0c;并沒有直接移除水波紋的能力 二、遇到問題 經過多次嘗試&#xff0c;使用Compose的Button組件始終無法實現目標效…

html通過數據改變,圖片跟著改變

改變前 改變后 通過數據來控制樣式展示 <template><div>通過num控制圖標是否更改{{num}}<div class"box"><!-- 如果num大于1則是另一種&#xff0c;樣式&#xff0c;如果小時1&#xff0c;則是另一種樣式 --><div class"item&qu…

android怎么告訴系統不要回收

在Android中&#xff0c;如果你想告訴系統不要回收你的應用程序&#xff0c;可以通過設置Activity的屬性來實現。你可以設置android:configChanges屬性&#xff0c;指定在哪些配置更改時不重新創建Activity。 例如&#xff0c;如果你想指示系統在屏幕方向更改時不要重新創建Ac…

又是一知識點

1.說一下什么是mvvm模式 Model代表數據模型&#xff0c;數據和業務邏輯都在Model層中定義&#xff1b;View代表UI視圖&#xff0c;負責數據的展示&#xff1b;ViewModel負責監聽Model中數據的改變并且控制視圖的更新&#xff0c;處理用戶交互操作&#xff1b; View 的變化會自…

小阿軒yx-Shell 編程之循環語句與函數

小阿軒yx-Shell 編程之循環語句與函數 for 循環語句 可以很好地解決順序編寫異常煩瑣、困難重重的全部代碼 &#xff08;&#xff09;{}&#xff1a;里邊寫的都是命令 &#xff09;&#xff1a;不能嵌套 $&#xff08;&#xff09;&#xff1a;可以嵌套&#xff0c;適合更…

day42 62.不同路徑 63. 不同路徑 II

62.不同路徑 思路 機器人從(0 , 0) 位置出發&#xff0c;到(m - 1, n - 1)終點。 按照動規五部曲來分析&#xff1a; 1.確定dp數組&#xff08;dp table&#xff09;以及下標的含義 dp[i][j] &#xff1a;表示從&#xff08;0 &#xff0c;0&#xff09;出發&#xff0c;…

2-Django項目進階--繼續學生管理系統

目錄 項目框架: urls.py views.py modules.py class_data.html add_and_modify.html add_stu.html 筆記: 繼承語法 模板繼承總結&#xff1a; 班級添加 add_and_modify.html 修改添加公用一個頁面即可 views.py 班級修改 views.py url.py 班級刪除 views.py…

boost asio異步服務器(2)實現偽閉包延長連接生命周期

閉包 在函數內部實現一個子函數&#xff0c;子函數的作用域內能訪問外部函數的局部變量。閉包就是能夠讀取其他函數內部變量。但是由于閉包會使得函數中的變量都被保存在內存中&#xff0c;內存消耗很大&#xff0c;所以不能濫用閉包&#xff0c;否則會造成程的性能問題&#x…

構造器--5.28

不用一個個屬性賦值的方法&#xff1a; 知道了類的創建與使用&#xff0c;但是每次賦值都是一個個調用&#xff0c;我們可以用構造器使得方法簡單一點&#xff0c;不用一個個調用屬性賦值&#xff0c;直接傳參就OK了&#xff1b; 點擊類名然后ctrl可以查看構造器 public yanxi…

C++完成特色旅游管理信息系統

背景&#xff1a; 繼C完成淄博燒烤節管理系統后&#xff0c;我們來到了特色旅游管理信息系統的代碼編寫&#xff0c;歷史鏈接點下方。 C完成淄博燒烤節管理系統_淄博燒烤總賬管理系統的-CSDN博客 問題描述&#xff1a; 為了更好的管理各個服務小組&#xff0c;開發相應的管…

民國漫畫雜志《時代漫畫》第30期.PDF

時代漫畫30.PDF: https://url03.ctfile.com/f/1779803-1248635414-87c8c8?p9586 (訪問密碼: 9586) 《時代漫畫》的雜志在1934年誕生了&#xff0c;截止1937年6月戰爭來臨被迫停刊共發行了39期。 ps: 資源來源網絡!

webpack打包配置項

webpack打包配置項 在config.js 中 module.exports {publicPath: process.env.NODE_ENV production ? / : /, //靜態資源目錄outputDir: dist, //打包名稱assetsDir: static,//靜態資源&#xff0c;目錄devServer: {port: port,open: false,overlay: {warnings: false,erro…