




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
人工智能綜合項目開發第一章人工智能基礎人工智能應用開發概述01嵌入式與人工智能的關系02開發環境搭建03Linux操作基礎04常用開發工具的使用05嵌入式微控制器IDE的使用06隨著5G、人工智能和物聯網技術的蓬勃發展,智能連接時代已經來臨,新興的智能終端和解決方案將越來越依賴于嵌入式技術。社會的各行各業都進入到了智能化升級改造的浪潮中,把人工智能技術融入實際的場景中,能夠輔助或者代替人類工作,提高工作效率,成為重點研究的課題。
從人工智能技術應用的角度出發,可分為云端人工智能和端側人工智能兩種。云端人工智能指傳感器收集到的數據不做任何處理,直接傳送到云端,在云端對數據進行計算處理。端側人工智能指數據在智能傳感器、智能節點等嵌入式端側中直接進行計算處理。云端人工智能依靠云的計算能力和標簽化的大數據對算法進行性能提升和優化。端側人工智能是從PC端互聯網搬移到智能化終端的具體應用,是人工智能落地的最后一公里的解決方案,且嵌入式設備無須聯網通過云端數據中心進行大規模計算去實現人工智能,而是在本地計算,在不聯網的情況下就可以做到實時的環境感知、人機交互、決策控制。因此云端計算的人工智能致力于如何更好地解決問題,而端側的人工智能則致力于如何更加經濟地解決問題。本章主要講述嵌入式與人工智能的關系、嵌入式人工智能的開發流程、嵌入式人工
智能的應用場景。嵌入式與人工智能的關系人工智能的定義人工智能(Artificial
Intelligence),簡稱
AI,即利用機器模擬人類感知、學習、
認知、推理、決策、交互等過程的一門技術??傮w來說人工智能就是要讓機器的行為看
起來就像是人所表現出的智能行為一樣。圖靈測試人物介紹
馬文·李·閔斯基(MarvinLeeMinsky,1927年8月9日-2016年1月24日)生于美國紐約州紐約市,科學家,專長于認知科學與人工智能領域,麻省理工學院人工智能實驗室的創始人之一,著有幾部人工智能和哲學方面的作品。1969年,因為在人工智能領域的貢獻,獲得圖靈獎。人工智能的定義
指由人制造出來的機器所表現出來的智能。通常人工智能是指通過普通計算機程序來呈現人類智能的技術。人工智能的定義
人工智能是研究、開發用于模擬、延伸和擴展人的智能的理論、方法、技術及應用系統的一門新的技術科學。強人工智能和弱人工智能技術階段哲學階段計算智能感知智能認知智能能存會算能聽會說,能看會認能理解會思考弱人工智能強人工智能“看起來”像是智能的,但是并不真正擁有智能,也不會有自主意識。能自主推理,有自主意識現階段人工智能領域未來研究方向強人工智能和弱人工智能神馬漢斯人工智能的特征由人類設計,為人類服務,本質為計算,基礎為數據。能感知環境,能產生反應,能與人交互,能與人互補。有適應特性,有學習能力,有演化迭代,有連接擴展。123人工智能的發展歷程人工智能、機器學習、深度學習無人駕駛醫療影像
目前我國醫學影像行業面臨兩大痛點:
第一是醫學影像醫生缺口大,誤診率高、效率低,服務模式亟待創新;
第二是醫學影像分析工作繁瑣重復,極度消耗精力。
而人工智能的介入使醫生對圖像的調閱、圖像質量的控制等有了更大的主動性,它使得醫生工作的關鍵模式發生了改變。“AI+醫學影像”解決行業痛點信息技術發展促進了醫學影像和教學科研工作的開展。人臉識別人臉識別、手機解鎖、人臉支付、相機自然語言處理南方都市報-小南和廣州日報-阿同、阿樂傳統預測領域信貸需求預測店鋪效率預測人工智能技術瓶頸云端智能與端側智能
云端智能與端側智能,前者的好處是,能夠承受高吞吐量并滿足復雜計算對資源的要求,因此多用于深度學習模型和計算較復雜的情況;而后者,則更多的應用于對「實時處理」有更高要求的場景中。
端側人工智能五大優勢
相比在云端運行的人工智能,終端側人工智能在隱私、可靠、低延時、高效及個性化方面均有諸多優勢。伴隨著移動終端成為人們生活中的必備品,終端側人工智能的優勢將更加凸顯。圖
0-1AI
在工作中的應用價值通過錯誤!未找到引用源??芍?,人工智能能夠勝任日常工作生活中絕大部分類別的
工作,能夠解決業務場景中高度復雜的計算問題,自主適應環境、主動配合人的工作,在一定程度上通過計算機運算幫助人們完成觀察、認知與決策的過程。而人類比較適合
做決策相關的任務,能夠定義業務問題,確定目標邊界,拆解問題,尋找完整的解決方
法等。通過人工智能技術能夠更好地輔助或者代替人類工作,提升工作效率,讓人類能夠
解脫出來做更多的決策工作,創造更大的價值。行業智能化發展浪潮由圖
0-2
可知,隨著人工智能技術的普及應用,傳統行業都進入到了智能化升級改
造的進程中,如:智能制造、智慧農業、智慧物流、智慧商務、智慧金融、智慧交通、
智慧醫療、智慧養老、智慧環保等。同時人工智能技術的發展也促進了新興產業的發展,
如:智能軟硬件、智能機器人、智能運載工具、智能終端、虛擬現實/增強現實等。智能
化的升級改造必將是未來發展的主要趨勢,使用人工智能技術可以在社會的各行各業中
大放異彩,由此可以更加體現出人工智能技術結合行業落地應用的重要性。圖
0-2
智能化升級改造行業智能化的關鍵思維行業智能化的發展離不開人工智能技術的支撐,從系統化的思維角度出發可拆分出,
構建一個完整的智能應用系統需要包含:輸入、傳輸、計算、存儲、輸出五大部分,如
圖
0-3
所示。例如:智慧交通、智能家居、智慧零售、智能音箱、智能手機、可穿戴設備等都需要由這五大部分構成最終的智能系統。圖
0-3
智能應用系統的組成人工智能不僅僅是一項技術,而是一種認識和思考世界的方式。人工智能技術要發揮價值就必須跟行業智能化需求相匹配,針對特定的產品或應用場景做智能化升級改造,
通過人工智能基礎知識的積累和系統化思維的構建輸出產品方案或解決方案,從而實現
人工智能技術的落地應用,如圖
1-4
所示。圖
0-4
智能化的關鍵思維邊緣計算基礎概述人工智能已經從技術走向應用,如何將
AI
技術真正落地,解決每個應用場景中人們
的實際需求,才是關鍵。而這個過程中嵌入式技術將成為
AI
落地的重要承載平臺,促使
人工智能在各個垂直行業落地生根。嵌入式
AI:讓人工智能算法可以在嵌入式智能終端設備上運行的一種技術概念。嵌
入式系統是“主體”,人工智能是“裝備”,強大的“屬性加成”以模塊來呈現,提供
新功能改進現有功能,讓智能更上一層樓,如圖
0-5
所示。圖
0-5
嵌入式系統+AI云端人工智能需要使用網絡傳輸,實時性和安全性都無法得到保障。使用嵌入式人
工智能在端側可實時處理數據,并且數據安全和可靠性得到保障。算力下沉到邊緣端已成為趨勢,嵌入式
AI
有低時延、高帶寬、高可靠、海量連接、異構匯聚、本地安全等特
點,如圖
0-6
所示。圖
0-6
嵌入式
AI
的特點嵌入式人工智能開發流程嵌入式人工智能可分為基礎支撐層、技術驅動層和場景應用層?;A支撐層主要包
含:操作系統、編程語言、硬件平臺等作為程序運行的基礎支撐;技術驅動層主要包含:
理論及算法、技術平臺/框架、通用技術等,通過對圖像處理、機器學習和深度學習等技
術的理論支撐,結合各種軟件框架實現圖像識別、目標檢測、圖像分割、語音識別、語
音合成、多傳感器融合等通用技術;場景應用主要是
AI
場景的落地應用,通過對通用技
術的理解結合人工智能思維在實際的場景中落地應用,如:智能無人車、智能可穿戴設
備、智能移動機器人、智能無人機等,如圖
0-7
所示。圖
0-7
嵌入式人工智能體系結構嵌入式人工智能開發主要包括兩大部分,即人工智能模型訓練和嵌入式終端模型部署。人工智能模型訓練主要在
PC
端進行,包括數據處理、模型訓練、模型優化等。嵌入
式端主要是結合實際場景部署和應用人工智能模型,如圖
0-8
所示。圖
0-8
嵌入式人工智能開發流程嵌入式人工智能開發的三個環節:模型訓練、模型轉換、模型部署。模型訓練需要
在
PC
端完成,使用深度學習框架構建模型,并完成模型訓練,常用的深度學習框架有:PyTorch、TensorFlow、PaddlePaddle
等;模型轉換主要是進行模型優化,對模型進行剪
枝、量化等操作,在損失較小模型識別精度的同時,極大地降低模型大小,便于在嵌入
式端運行;模型部署根據模型轉換后的模型編寫模型推理代碼,實現嵌入式端的模型部
署
及
應
用
,
常
用
的
模
型
推
理
框
架
有
:OpenCV
DNN、OpenVINO、TensorFlow
Lite、
PaddleLite、TensorRT、ONNX、Tengine
等。圖
0-9
嵌入式
AI
的三個主要環節圖
0-10
主要描述人臉口罩檢測嵌入式端模型部署的完整流程,該樣例使用
PyTorch
深度學習框架和
OpenVINO
模型推理框架實現。主要分為
PC
端模型訓練和嵌入式端模型部署及應用,由數據采集、模型構建、模型訓練、模型轉換、模型部署、擴展應用六大步
驟組成。圖
0-10
人臉口罩檢測模型部署及應用嵌入式人工智能應用場景嵌入式與人工智能的結合為各行各業垂直領域的應用帶來巨大潛力。嵌入式人工智
能廣泛應用于零售、交通、運輸、自動化、制造業及農業等行業。驅動市場的主要因素
就是嵌入式人工智能技術在各種終端用戶垂直領域的應用數量不斷增加,尤其是改善對
終端消費者的服務。嵌入式技術在人工智能時代,有了新的定義與前景,人工智能也為
嵌入式的智能發展賦能,使嵌入式產品更快地走進千家萬戶,甚至未來絕大多數產品都
是基于嵌入式設備的數據采集與智能處理分析,比如用于物流的自動分揀機器人、智能
快遞柜等,用于城市交通中的無人駕駛汽車、交警機器人等,用于安防系統的智能攝像
頭、人臉識別、巡檢機器人等,用于家居中的智能音箱、掃地機器人等,這些都是典型
的嵌入式人工智能應用產品??偠灾?,人工智能的落地大多基于嵌入式技術,嵌入式技術為人工智能發展提供
了硬件支撐。人類突破了早年的通信速度問題產生了萬物互聯,通過萬物互聯產生了大
數據,通過大數據分析可以讓設備擁有機器學習的能力。隨著物聯網、三網融合等高端技術的發展,嵌入式與人工智能相結合必將成為主流的核心技術。開發環境搭建任任務要求通過本章節學習將會對嵌入式人工智能應用需要的開發環境有了整體的認識,并對
整個環境的配置過程做到全面掌握。任知識入入Python
開發環境配置Anaconda
指的是一個開源的
Python
發行版本,其包含了
conda、Python、科學計算
工具等科學包,是一個用于數據科學,機器學習和深度學習的開源軟件包管理系統。Miniconda
只包含了最基本的包和工具
conda、Python,需要的包可以通過
conda
來
安裝和管理。在官網下載
Miniconda,下載鏈接:https://conda.io/miniconda.html。下載完成后雙擊.exe
文件啟動安裝向入,如圖
3-1
所示:Miniconda
安裝選擇添加環境變量,如圖
3-2
所示。圖
3-2
Miniconda
配置環境變量如圖
3-3
所示,點擊
finish
完成安裝。圖
3-3
Miniconda
安裝完成Miniconda
創建
Python
虛擬環境Python
之所以強大,除了語言本身的特性外,更重要的是擁有無所不及的第三方庫。
強大的軟件庫,讓開發者將精力集中在業務上,而避免重復造輪子的浪費。但眾多的軟
件庫,形成了復雜的依賴關系,對
Python
開發造成了不少困擾。conda
作為一個非常好
的
Python
包管理軟件,能輕松實現
Python
開發環境的管理。使用
Miniconda
創建一個
python3.6
的環境,并安裝
python3.6,命令如下:基于
python3.6
創建一個名為
test_py
的虛擬環境。激活
test_py
虛擬環境。conda
deactivate退出虛擬環境。Miniconda
常用命令conda
install
python=3.6conda
create
--name
test_py
python=3.6conda
activate
test_py可以使用
conda
直接安裝和管理
Python
庫。使用如下命令安裝
Python
庫:同時安裝多個
Python
庫時,用空格將
Python
庫名隔開即可,例如同時安裝
numpy、
scipy、pandas
包命令如下:查看已安裝的
Python
包:根據
Python
包名搜索已安裝的包:更新
Python
包:卸載
Python
包:conda
install
package_nameconda
install
numpy
scipy
pandasconda
listconda
search
search_termconda
update
package_nameconda
remove
package_namePython
IDE
的使用(1)PyCharm
簡介PyCharm
是一種
Python
IDE(Integrated
Development
Environment,集成開發環
境),帶有一整套可以幫助用戶在使用
Python
語言開發時提高其效率的工具,比如調試、
語法高亮、項目管理、代碼跳轉、智能提示、自動完成、單元測試、版本控制等。(2)PyCharm
的安裝在官網:/pycharm/根據電腦版本選擇不同的包進行下
載,如圖
3-4。圖
3-4
PyCharm
軟件下載完成結束,開始安裝,安裝目錄推薦磁盤為
D
盤。安裝版本選擇。Create
Desktop
Shortcut
創建桌面快捷方式,如圖
2-5
所示,選擇
64
位。勾選
Create
Associations
是否關聯文件,選擇之后打開.py
文件,之后所有的.py
文件都將會用
PyCharm
軟件打開。圖
3-5
PyCharm
版本選擇(3)PyCharm
的使用如圖
3-6
所示,點擊
Create
New
Project
創建一個新的項目。圖
3-6
PyCharm
首次創建工程界面如圖
3-7
所示,輸入路徑,選擇
Python
解釋器。圖
3-7
PyCharm
路徑選擇如圖
3-8
所示,選擇
Python
解釋器,添加
Python
解釋器后,PyCharm
就會掃描出目
前已經安裝的
Python
擴展包,和這些擴展包的最新版本。圖
3-8
Python
解釋器點擊
File
創建工程,如圖
3-9
所示。圖
3-9
創建工程點擊
New,創建
Python
文件,如圖
3-10
所示。圖
3-10
創建
Python
文件點擊
Run
運行程序,并將運行結果輸出,如圖
3-11
所示。圖
3-11
運行
Hello
WorldLinux
操作基礎任任務要求在了解了整個環境之后,對環境中的基本操作需要熟練掌握,本章就是對嵌入式人工智能的常用基本操作進行講解和練習,為后面的實現案例打好
基礎。本章將涉及
SSH
的認識及遠程連接操作、Linux
的基本操作、軟件包的安裝與卸載命令以及
VNC
的可視化界面操作。任知識入入Linux
操作基礎Linux
是一個高可靠、高性能的系統,而所有這些優越性只有在直接使用
Linux
命令
行時(shell
環境)才能充分地體現出來。(1)Shell說到命令行,實際上指的是
shell。shell
腳本解釋程序,它接受從鍵盤輸入的命令,
然后把命令傳遞給操作系統去執行。幾乎所有的
Linux
發行版都提供一個來自
GNU
項目名
為
bash
的應用程序。bash
是“Bourne
Again
SHell”的首字母縮寫。bash
其實是
Unix上的
shell
的一個增強版。外接入鍵鼠之后使用按下
Ctrl+Alt+T,即可彈出
Shell
終端。圖
4-1
打開
Shell
終端如上圖
4-1
所示,字符包括用戶名@主機名,當前工作目錄和一個美元符號。如果提
示符的最后一個字符是“#”,而不是“$”,那么終端會話就是超級用戶權限。(4)Linux
常用基礎命令
1、ls
命令ls
就是
list
的縮寫,通過
ls
命令不僅可以查看
Linux
文件夾包含的文件,而且可以查看文件權限(包括目錄、文件夾、文件權限)查看目錄信息等等。$
ls
-lrS例如按大小反序顯示文件詳細信息。2、cd
命令$
cd
..例如返回上一級目錄。3、mkdir
命令mkdir
命令用于創建文件夾。-m:
對新建目錄設置存取權限,也可以用
chmod
命令設置;-p:
可以是一個路徑名稱。此時若路徑中的某些目錄尚不存在,加上此選項后,系
統將自動建立好那些尚不存在的目錄,即一次可以建立多個目錄。$
mkdir
test例如在當前工作目錄下創建名為
test
的文件夾。例如在
tmp
目錄下創建路徑為
test/t1/t
的目錄,若不存在,則創建:4、rm
命令除一個目錄中的一個或多個文件或目錄,如果沒有使用
-r
選項,則
rm
不會刪除目
錄。如果使用
rm
來刪除文件,通常仍可以將該文件恢復原狀。
5、df
命令df
命令是顯示磁盤空間使用情況。獲取硬盤被占用了多少空間,目前還剩下多少空
間等信息,如果沒有文件名被指定,則所有當前被掛載的文件系統的可用空間將被顯示。
默認情況下,磁盤空間將以
1KB
為單位進行顯示,除非環境變量
POSIXLY_CORRECT
被指
定,那樣將以
512
字節為單位進行顯示。$
df
-h例如顯示磁盤使用情況。6、free
命令$
mkdir
-p
/tmp/test/t1/t例如刪除
test
子目錄及子目錄中所有檔案刪除,并且不用一一確認。$
rm
-rf
testfree
命令是顯示系統內存使用情況,包括物理內存、交互區內存(swap)和內核緩
沖區內存。$
free
-h例如顯示內存使用情況7、find
命令find
命令用于在文件樹中查找文件,并作出相應的處理。$
find
/opt
-
/opt
目錄下權限為
777
的文件。8、cp
命令cp
命令將源文件復制至目標文件,或將多個源文件復制至目標目錄。例如復制
a.txt
到
test
目錄下,保持原文件時間,如果原文件存在提示是否覆蓋。9、locate
命令locate
命令通過搜尋系統內建文檔數據庫達到快速找到檔案,數據庫由
updatedb$
cp
-ai
a.txt
test程序來更新,updatedb
是由
crondaemon
周期性調用的。默認情況下
locate
命令在搜尋數據庫時比由整個硬盤資料來搜尋資料來得快。例如搜索
etc
目錄下所有以
sh
開頭的文件$
locate
/etc/sh(5)視頻的讀取與顯示OpenCV
為開發者提供了
CV2.VideoCapture
視頻捕獲類函數,這是一個通用的捕獲視頻圖像的程序接口。CV2.VideoCapture
視頻捕獲類函數如下表
4-1
所示:表
4-1
攝像頭捕獲構造類功能cv2.VideoCapture
類的構造函數參數說明視頻文件<VideoCaputrue
object>
=
cv2.VideoCapture(VideoPath)VideoPath:本地視頻文件路徑攝
像
頭
設
備<VideoCaputrue
object>
=
cv2.VideoCapture(index)index:攝像頭設備
ID,填
0
表示
使用系統默認的攝像頭,在
linux
系統中,如果存在多個攝像頭,可
以使用“/dev/video1“
等這樣的
設備名通過構造函數可獲得
VideoCapture
類的實例對象,通過
VideoCapture
實例對象的成
員方法
read
讀取視頻幀。使用
OpenCV
捕獲視頻流非常容易,流程如下圖
4-2
所示:圖
4-2
視頻捕獲基本流程視頻流捕獲示例代碼如下:import
cv2
as
cv#獲取本地攝像頭對象
cap
=
cv.VideoCapture(0)
#如果檢測到攝像頭已打開
if
cap.isOpened():state,
frame
=
cap.read()
#抓取下一個視頻幀狀態和圖像while
state:#當抓取成功則進入循環state,frame
=
cap.read()
#
抓取每一幀圖像cv.imshow('video',frame)
#
顯示抓取到的圖像幀#
等待鍵盤按下,超時
25ms
可通過設置等待超時時間來控制視頻播放速度。k
=
cv.waitKey(25)
&
0xff
#
25ms
內當有鍵盤按下時返回對應按鍵
ASCII
碼,超時返回-1if
k
==
27
or
chr(k)
==
‘q’:
#
當按下
Esc
或者
q
時退出循環。break(6)Python
程序運行在嵌入式端運行
Python
程序時,首先確定端側已搭建好
Python
環境,如下圖
4-3
所示,輸入命令
python
-V
查看
Python
版本號。圖
4-3
查看
Python
版本號若同時安裝了
Python2
和
Python3,如下圖
4-4
所示,輸入命令
python3
-V
查看
Python3
版本號。圖
4-4
查看
Python3
版本號如圖
4-5
所示,在終端命令行輸入:python
文件名.py,直接運行
Python
程序,如果安裝的是
python3,則運行程序的命令為:python3
文件名.py。圖
4-5
運行
Python
程序示例(7)vim
編輯器vim
是一個可以在
shell
中運行的高度可自定義的文本編輯器。vim
簡潔而強大,下面將
vim
進行一些外觀優化:$
sudo
apt-get
install
vim
#
安裝
vim
編輯器$
wget
--no-check-certificate
https:///amix/vimrc/master/vimrcs/basic.vim//
復制
vim
的配置文件到你的~/.vimrc$
cp
basic.vim
~/.vimrc優化后編輯
Python
文件時將會高亮顯示語法關鍵字。vim
共分為三種模式,分別是命令模式(Command
mode),輸入模式(Insert
mode)
和底線命令模式(Last
line
mode)。使用命令
vim
文件名,進入
vim
編輯器,如圖
4-6
所示。圖
4-6
進入
vim
編輯器啟動
vim
編輯器時,默認進入命令模式,在這個模式下,vim
編輯器會將按鍵解釋成
命令,無法對文件進行編輯,如圖
4-7
所示。在命令模式下輸入:q
即可退出
vim
編輯器。圖
4-7
vim
編輯器命令模式在命令模式下鍵入
i
可進入插入模式
insert,如圖
4-8
所示。在插入模式下
vim
會
將你在光標位置輸入的每個鍵都插入到緩沖區,也就是直接輸入到文本中,并在屏幕上
打印出來。一般通過插入模式對文件進行編輯修改操作。一般編輯結束后,鍵入
ESC
鍵
退出插入模式返回命令模式,然后輸入:wq
即可保存并退出
vim
編輯器。圖
4-8
vim
編輯器插入模式軟件包安裝與卸載(1)apt-getAdvanced
Package
Tool,又名
apt-get,是一款適用于
Unix
和
Linux
系統的應用程
序管理器,最初于
1998
年發布,用于檢索應用程序并將其加載到
Debian
Linux
系統。
apt-get,是一條
linux
命令,主要用于自動從互聯網的軟件倉庫中搜索、安裝、升級、
卸載軟件或操作系統。apt-get
安裝和卸載軟件包命令如下:a.apt-get
update
更新軟件包信息庫b.apt-get
upgrade
更新所有已安裝的軟件包c.apt-get
dist-upgrade
更新整個
Debian
系統d.apt-get
install
packagename
安裝新軟件包e.apt-get
remove
packagename
卸載已安裝軟件包(保留配置文件)f.apt-get
-purge
remove
package_name
卸載已安裝軟件包(不保留配置文件)
g.apt-get
autoremove
packagename
卸載已安裝軟件包(卸載依賴軟件)
h.apt-get
autoclean
刪除已卸載軟件的安裝包i.apt-get
clean
刪除已卸載和安裝軟件的安裝包pip
是一個現代的,通用的
python
包的管理工具,pip
也是一個
python
庫,提供了
對
Python
包的查找、下載、安裝和卸載功能。一般來說
Python
需要什么包可以直接在線使用:即可,但是這種安裝方法太慢,因為該方法是通過國外的服務器下載。為提高
pip
下
載速度,這里提供幾個國內下載源:清華源:/simple
阿里云:/pypi/simple/中國科技大學
/simple/華中理工大學:/
山東理工大學:/
例如使用前清華源下載,使用如下命令:pip
install
-i
/simple
numpypip
install
包名命令在
pip
安裝中,可能無法通過正常的
pip
命令來安裝,下面將通過使用源碼編譯的方
式來進行安裝。下面是
Linux
離線安裝
pip3
的詳細步驟:
步驟一:在官網下載安裝包如圖
4-9
所示;圖
4-9
pip
官網步驟二:將下載好的安裝包上傳至
Linux
系統下;
步驟三:使用如下的命令對安裝包進行解壓;步驟四:使用
cd
命令進入解壓好的文件所在路徑;
步驟五:執行如下的命令進行安裝。sudo
python3
setup.py
installpip
卸載命令為:tar
-xf
文件名pip
uninstall
包名任任務要求
常用開發工具的使用通過本章節學習將會對嵌入式人工智能應用需要的開發環境有了整體的認識,并對
整個環境的配置過程做到全面掌握。任知識入入SSH
遠程連接(1)SSH
簡介Secure
Shell(SSH)是由
IETF(The
Internet
Engineering
Task
Force,國際互
聯網工程任務組)制定的建立在應用層基礎上的安全網絡協議。它是專為遠程登錄會話
(甚至可以用
Windows
遠程登錄
Linux
服務器進行文件互傳)和其他網絡服務提供安全性
的協議,可有效彌補網絡中的漏洞。通過
SSH,可以把所有傳輸的數據進行加密,也能夠
防止
DNS
欺騙和
IP
欺騙。還有一個額外的好處就是傳輸的數據是經過壓縮的,所以可以加快傳輸的速度。目前已經成為
Linux
系統的標準配置。(2)SFTPSFTP(Secret
File
Transfer
Protocol)是一種安全的文件傳輸協議,提供文件訪
問、傳輸和管理功能的網絡傳輸協議。它確保使用私有和安全的數據流來安全地傳輸數
據。SFTP
要求客戶端用戶必須由服務器進行身份驗證,并且數據傳輸必須通過
SSH
進行,
也即是不傳輸明文密碼或文件數據。它允許對遠程文件執行各種操作,有點像遠程文件
系統協議。(3)SSH
基礎用法SSH
主要用于遠程登錄。例如用戶名為
user,登錄遠程主機為
host,只需輸入如下
命令即可。SSH
的默認端口是
22,如果不設置端口號登錄,則會自動送到遠程主機的
22
號端口,$
ssh
user@host可以使用-p
選項來修改端口號,比如連接到服務器端口的
1234。ssh
-
將
目錄。$HOME/src/目錄下面的所有文件,復制到遠程主機的$HOME/src/p
1234
ldz@192.168.0.1$
cd
&&
tar
czv
src
|
ssh
user@host
'tar
xz'如果是第一次連接登錄,系統會提示“無法確認
host
主機的真實性,只知道它的公鑰指紋你還想繼續連接嗎”,如下所示:
使用密碼登錄,每次都必須輸入密碼,是非常繁瑣的。但
SSH
提供了公鑰指紋,可
以省去輸入密碼的步驟。所謂“公鑰指紋”,原理很簡單,就是用戶將自己的公鑰儲存在遠程主機上。登錄
的時候,遠程主機會向用戶發送一段隨機字符串,用戶用自己的私鑰加密后,再發回來。
遠程主機用事先儲存的公鑰進行解密,如果成功,就證明用戶是可信的,直接允許登錄$
ssh
user@hostThe
authenticity
of
host
'host
(12.18.429.21)'
can't
be
established.RSA
key
fingerprint
is
98:2e:d7:e0:de:9f:ac:67:28:c2:42:2d:37:16:58:4d.Are
you
sure
you
want
to
continue
connecting
(yes/no)?shell,不再要求密碼。遠程主機必須在自己網站上貼出公鑰指紋,以便用戶自行核對。假定經過風險衡量
以后,用戶決定接受這個遠程主機的公鑰提示如下:
host系統會出現如下提示,表示Are
you
sure
you
want
to
continue
connecting
(yes/no)?
yes
主機已經得到認可。要求輸入密碼后,就可以正常登錄。當遠程主機的公鑰被接受以后,它就會被保存在文件$HOME/.ssh/known_hosts
之中。
下次再連接這臺主機,系統就會認出它的公鑰已經保存在本地了,從而跳過警告部分,
直接提示輸入密碼。每個
SSH
用戶都有自己的
known_hosts
文件,此外系統也有這樣的文件,通常是
/etc/ssh/ssh_known_hosts,保存一些對所有用戶都可信賴的遠程主機的公鑰。使用公鑰登錄要求用戶必須提供自己的公鑰。如果沒有,可以直接用
ssh-keygen
命Warning:
Permanently
added
'host,12.18.429.21'
(RSA)
to
the
list
of
known
hosts.Password:
(enter
password)令生成。輸入命令運行結束后,在$HOME/.ssh/目錄下,會新生成兩個文件:id_rsa.pub
和
id_rsa。前者是公鑰,后者是私鑰。這時再輸入如下命令,將公鑰傳送到遠程主機
host
上面再次連接時就不再輸入登錄
密碼。連接工具
MobaXtermMobaXterm
是
SSH
客戶端,可以向
Windows
桌面提供所有重要的遠程網絡工具(SSH,X11,RDP,VNC,FTP,MOSH
…)和
Unix
命令(bash,ls,
cat,sed,grep,awk,rsync
等),為遠程任務提供一體化服務。當用戶使用
SSH
連接到遠程服務器時,將自動彈出圖形
SFTP
瀏覽器以直接編輯遠程
文件。$
ssh-keygen$
ssh-copy-id
user@hostMobaXterm
軟件安裝首先下載該軟件,下載網址:https:///,選擇“Download”,選擇免費版的下載。下載完成后,直接解壓文件,雙擊
exe
文件安裝軟件。軟件安裝完成后,電腦桌面將會出現如圖
5-1
的圖標。圖
5-1
MobaXterm
軟件圖標MobaXterm
軟件使用打開軟件界面如圖
5-2
所示:圖
5-2
MobaXterm
軟件界面首先創建
SSH
session,點擊菜單欄「sessions」,點擊「new
session」,將彈出
session
setting
對話框,如圖
5-3:圖
5-3
SSH
創建界面選中第一個
SSH
圖標,并填入相關信息,就可以完成
session
的創建。點擊確定后,
輸入用戶名和密碼后就可以連接上虛擬機了。且連上虛擬機之后,會自動通過
FTP
也連
接到虛擬機,直接拖拽就可以完成文件上傳和下載。登錄后的界面主要分為兩部分,左邊的是主機的文件,右邊是終端。如圖
5-4
勾選
左下角“Follow
terminal
folder”可以讓兩者的工作路徑保持一致。圖
5-4
SSH
登錄界面創建串口
session串口
session
創建如圖
5-5
所示,在
Session
settings
對話框里選擇
Serial,選擇
相對應的串口號及波特率,點擊
OK
按鈕即可完成連接。同樣
session
會保存在左側的
session
標簽頁里,方便下次連接。圖
5-5
創建串口
session
界面如圖
5-6
所示,可以個性化設置,如設置終端字體、設置右鍵復制、設置字號等。圖
5-6
個性化設置界面VNC
可視化連接工具(1)VNC
簡介VNC(Virtual
Network
Computer)是一款基于
UNIX
和
Linux
操作系統的遠程控制工
具軟件,由
AT&T
的歐洲研究實驗室開發,其遠程控制能力強大,高效實用。VNC
作為一
種遠程登錄的圖形化界面軟件,能將完整的窗口界面通過網絡傳輸到另一臺計算機的屏
幕上。VNC
由兩個基礎部分組成:客戶端的應用程序(vncviewer)和服務器端的應用程序
(vncserver)。用戶需先將
VNC
server
安裝在被遠程操控的計算機上后,在主控端執行
VNC
viewer
就能進行遠程操控,且服務器端還內建了
Java
Web
接口,開發者通過服務器
端對其他計算機的操作就能通過
Netscape
進行顯示,這樣的操作過程和顯示方式比較直
觀方便。(2)VNC
連接apt-get
install
vnc4server在服務器端啟動
VNC
Server
執行如下命令安裝
VNC
Server。
vncserver然后啟動
VNC
Server。(3)客戶端安裝
VNC
Viewer若要通過客戶端對服務器端進行遠程桌面連接,需在客戶端安裝
VNC
Viewer,首先
下載
VNC
Viewer,官方下載地址。下載完成后雙擊.exe
文件啟動安裝向入如圖
5-7
所示。圖
5-7
VNC
Viewer
安裝向入當看到下圖
5-8
所示時,點擊
finish
完成安裝。圖
5-8
VNC
Viewer
安裝成功2)VNC
客戶端通過
VNC
Viewer
連接至
VNC
Server。打開客戶端
VNC
Viewer,輸入遠程控制端所在局域網的
IP
地址和端口號進行連接,
如圖
5-9
所示。圖
5-9
連接
VNC輸入服務器端登錄密碼,點擊
OK
如圖
5-10
所示。圖
5-10
輸入密碼若客戶端通過
VNC
Server
的驗證,即成功連接到
VNC
Server
圖形化桌面,如圖
5-
11
所示為遠程連接開發板圖像化桌面示例。圖
5-11
VNC
連接成功示例嵌入式微控制器
IDE
的使用Keil
MDK-ARM
是美國
Keil
軟件公司(現已被
ARM
公司收購)出品的支持
ARM
微控制
器的一款
IDE(集成開發環境)。MDK-ARM
包含了工業標準的
Keil
C
編譯器、宏匯編器、調試器、實時內核等組件。
具有行業領先的
ARM
C/C++編譯工具鏈,完美支持
Cortex-M、Cortex-R4、ARM7
和
ARM9
系列器件,涉及世界上眾多品牌的芯片,比如:ST、Atmel、Freescale、NXP、TI
等大公
司微控制器芯片。(1)Keil
5
軟件安裝雙擊如圖
5-12
中所示圖標進行安裝。圖
5-12
MDK
安裝包如圖
5-13
所示,選擇安裝路徑(以
D
盤
Keil
5
為例)——點擊
Next,安裝路徑不
能帶中文。圖
5-13
選擇安裝路徑如圖
5-14
所示,填寫用戶名(First
name)與郵箱(E-Mail)。圖
5-14
填寫用戶名添加器件庫安裝包,如圖
5-15
所示,雙擊
Keil.STM32F4xx_DFP.1.0.8.pack
安裝包
(根據使用的芯片型號,添加對應的器件庫包;因這里以
STM32F407xx
為例,故選擇對
應
F4
系列的安裝包;若使用其他系列芯片,則需要添加其對應區間的庫包;可同時添加
不同型號的器件庫安裝包)。圖
5-15
STM32F4
系列器件庫包(2)keil
5
下載工程如圖
5-16
所示,打開軟件,選擇
Project——Open
Projec...(打開工程)。圖
5-16
創建工程如圖
5-17
所示,找到工程存放路徑,選擇工程,點擊打開已經編寫好的工程。圖
5-17
保存工程路徑如圖
5-18
所示,點擊如下圖所示按鈕進行下載器配置。圖
5-18
進入下載器配置界面如圖
5-19
選擇
Debug
選項,這里所使用的仿真器為
J-LINK
V8
仿真器,所以在
Use
的下拉列表中選擇
J-LiNK/J-TRACE
Cortex
選項。圖
5-19
下載器配置如圖
5-20
所示,點擊
Settings
按鈕,進入設置界面。圖
5-20
設置界面選擇
Debug
的選項,在
Port
選項中選擇
SW
模式,如圖
5-21
所示的步驟
3,表示仿
真器識別到開發板的芯片。設置完成后選擇
Flash
Download
選項。完成此步驟,需要仿
真器連接電腦和開發板,并且需要給開發板供電。圖
5-21
Debug
界面按照如圖
5-22
所示設置下載配置,勾選“Reset
and
Run”,則在下載完程序會自動
復位,無需手動復位,點擊
Add(添加按鈕)。圖
5-22
下載配置如圖
5-23
所示采用的
STM32
的
Flash
大小是
1M
的,所以選擇容量大小為
1M
的
STM32F4xx
Flash,點擊
Add(添加)。圖
5-23
添加
flash如圖
5-24
所示添加成功。圖
5-24
添加成功如圖
5-25
所示,點擊編譯程序,在“Build
Output”窗口查看編譯結果,只有編譯
通過,程序才能被下載。圖
5-25
編譯程序如圖
5-26,程序沒有錯誤,點擊下載燒寫程序。下載程序時,需要仿真器連接到電
腦和開發板,并且開發板要供電。圖
5-26
下載程序Thankyouforwatching.成都職業技術學院人工智能綜合項目開發項目一智能農業作物監測系統成都職業技術學院項目分析01任務一農作物識別模型訓練02任務二農作物生長狀況監測任務03項目一
智能農業作物監測系統項目分析通過現場設備實現植被的生產全流程環境的監控,依據專業系統進行生產管理分析,
實現對各個生產設備進行精準、高效的智能化管理。同時記錄各個環節的歷史數據,為
農作物的生長研究提供各種數據支撐以及技術支撐。任務一
農作物識別模型訓練在本項目中需要使用
AI
識別農作物的生長檢測,這里采用的是
EasyDL
的在線識別與
訓練。首先進入
EasyDL
官網(/easydl/),登入或注冊百度智能云賬
戶。EasyDL
智能云登入界面在飛槳
EasyDL
的首頁中,點擊立即使用,選擇物體檢測。在這個任務中檢測農作物
的生長周期需要讓程序去識別攝像頭圖像中農作物的信息,所以最好的識別方法就是通
過模型訓練,根據訓練的成果,使程序可以識別出,攝像頭圖像中農作物的生長周期。模型選擇由于農作物存在幼苗期,生長期,成熟期,生長周期的不同對應的就需要采用物體
檢測的方式,劃分出農作物的狀態。圖
0-1
物體檢測控制點擊創建模型,由于需要檢測農作物生長,于是需要創建檢測農作物生長的模型。
并根據網站信息填寫相應的信息。圖
0-2
創建模型在數據總覽中創建新的數據集,命名為生長檢測。點擊完成。圖
0-3
創建數據集點擊完成后會發現在數據總覽中出現了如圖
0-4
的數據集信息,在這個數據集里增
加隨機性的圖片實現模型的識別訓練。圖
0-4
生長周期數據集點擊入入,此時進入了一個新的界面。在圖
0-5
的下方選擇入入圖片,將訓練的樣
本加載到數據集中,點擊保存。圖
0-5
數據集入入入入完成后,數據集中就會顯示樣本的數量以及標注的信息。點擊查看與標注就可
以對模型進行訓練。圖
0-6
樣本數據入入農作物中存在
3
個生長周期,幼苗期,生長期,成熟期,所以在訓練時創建對應的
標簽。任務二
農作物生長狀況監測任務在這個任務中檢測農作物的生長周期需要讓程序去識別攝像頭圖像中農作物的信息,
所以最好的識別方法就是通過模型訓練,根據訓練的成果,使程序可以識別出,攝像頭
圖像中農作物的生長周期。農作物中存在
3
個生長周期,幼苗期,生長期,成熟期,所以在訓練時創建對應的
標簽。圖
1.1
設置標簽創建好后在數據標注中,根據自己的判斷選出符合生長周期的農作物。圖
1.2
數據標注數據標注完成后,對在訓練模型中進行部署訓練。圖
1.3
訓練模型當出現如圖
1.4
數據信息時(需要先進行發布,審核通過后就可以通過控制臺顯示
調用模型信息),證明模型訓練完成,可以進行調用識別。圖
1.4
完成訓練在百度智能云控制臺的應用列表中,根據提示創建新的應用,創建完成后,就可以
根據對應的開發文檔調用訓練好的模型數據。Thankyouforwatching.成都職業技術學院人工智能綜合項目開發第二章OpenCV基礎成都職業技術學院OpenCV簡介01OpenCV安裝02圖像讀取與顯示03視頻的讀取與顯示04圖像基本操作05OpenCV
基礎OpenCV
簡介OpenCV(Open
Source
Computer
Vision
Library)是一個開源的跨平臺計算機視覺
和機器學習庫。擁有超過
2500
種優化算法,包括一套全面的、經典的和最先進的計算機
視覺和機器學習算法。這些算法可用于檢測和識別面部,識別物體,對視頻中的人體動
作進行分類,跟蹤相機移動,跟蹤移動物體等應用。OpenCV
其本身是用
C++編寫的,同時提供了
C++,Python,Java
和
MATLAB
程序接口,
并支持
Windows、Linux、Android、Mac
OS
等操作系統。如圖
0-1
所示,1999
年
Intel
公司為增強
CPU
集群性能,啟動了很多研究項目,其
中就包括
OpenCV。OpenCV
最初的核心代碼和算法規范是英特爾實驗室團隊完成的。2018
年發布了
OpenCV4.X
版本,該版本全面加強了算法的性能,補充了神經網絡等模塊功能。圖
0-1OpenCV
版本迭代歷史OpenCV
安裝Python
開發環境安裝
OpenCV
依賴包可使用如下命令安裝。pip3
instal
opencv-python
-i
/simple
--user使用
pip3,意思是在
python3
中安裝
opencv-python
庫,可以使用如下命令來查看
pip3
的版本號和
pip3
所對應的庫安裝路徑。-i
選項指定倉庫源,這使用豆瓣提供的
pip
源,用來加速下載。--user
選項指定是用戶安裝,避免出現權限不足的問題,而入致安裝失敗。pi@raspberrypi:~$
pip3
--versionpip
19.3.1
from
/usr/local/lib/python3.7/dist-packages/pip
(python
3.7)任注意
如果需要安裝指定版本的
opencv-python
庫。可以使用如下命令先查詢當前有多少版本可供安裝。pip3
install
opencv-python==報錯,然后提示可以從如下版本中選擇安裝。ERROR:
Could
not
find
a
version
that
satisfies
the
requirement
opencv-python==
(from
versions:
,
,
,
,
,
,
,
,
,
,
0,1,
2,
4,
5,
6,
7,
8,
9,
0,
7,
8,
9,
1,
3,
4,
5,
6,
0)比如,需要安裝
opencv-python
庫的
6
版本,則安裝命令如下:pip3
instal
opencv-python==6
-i
https:///simple
--user圖像讀取與顯示讀入、顯示和保存圖像和視頻數據是計算機視覺中最基本也是必不可少的操作,OpenCV
提供了這些基礎操作的
API
函數,通過本節內容,開發者可以掌握如何使用OpenCV
庫中的函數進行圖像和視頻的讀取、顯示和存儲。使用
OpenCV
庫的
imread
函數實現從磁盤中讀取一張圖像,使用函數
imshow
將它顯
示到
GUI
窗口中,圖像寫入使用
imwrite
函數。讀取、顯示與寫入圖像的流程如圖
0-1
所示:圖
0-1
圖像讀取顯示與寫入基本流程根據圖
4-2
流程,讀取一張圖片并顯示的示例代碼如下:import
cv2
as
cv#
自定義圖片地址
img_path
=
'./test_alpha.png'
#
讀入圖像img_bgr
=
cv.imread(img_path)
#
顯示圖片
cv.imshow('img_bgr',
img_bgr)
#
無限期的等待鍵盤按下
cv.waitKey(0)#銷毀所有窗體
cv.destroyAllWindows()#
存儲圖片,將圖片保存成
jpg
格式
cv.imwrite('./test.jpg',
img_bgr)通過上述代碼,可以將.png
格式的圖片另存為.jpg
格式的圖像,這是因為函數
imwrite()會根據文件名的后綴名來選擇不同的壓縮編碼方式,開發者只需更改文件后綴
名即可實現將圖像保存成不同的圖像格式。視頻的讀取與顯示OpenCV
為開發者提供了
CV2.VideoCapture
視頻捕獲類函數,這是一個通用的捕獲視頻圖像的程序接口。CV2.VideoCapture
視頻捕獲類函數如下表
4-1
所示:表
4-1
攝像頭捕獲構造類功能cv2.VideoCapture
類的構造函數參數說明視頻文件<VideoCaputrue
object>
=
cv2.VideoCapture(VideoPath)VideoPath:本地視頻文件路徑攝
像
頭
設
備<VideoCaputrue
object>
=
cv2.VideoCapture(index)index:攝像頭設備
ID,填
0
表示
使用系統默認的攝像頭,在
linux
系統中,如果存在多個攝像頭,可
以使用“/dev/video1“
等這樣的
設備名通過構造函數可獲得
VideoCapture
類的實例對象,通過實例對象
VideoCapture
的成
員方法
read
讀取視頻幀。使用
OpenCV
捕獲視頻流非常容易,流程如下圖
0-1
所示:圖
0-1
視頻捕獲基本流程視頻流捕獲示例代碼如下:import
cv2
as
cv#獲取本地攝像頭對象
cap
=
cv.VideoCapture(0)
#如果檢測到攝像頭已打開
if
cap.isOpened():state,
frame
=
cap.read()
#抓取下一個視頻幀狀態和圖像while
state:#當抓取成功則進入循環state,frame
=
cap.read()
#
抓取每一幀圖像cv.imshow('video',frame)
#
顯示抓取到的圖像幀#
等待鍵盤按下,超時
25ms
可通過設置等待超時時間來控制視頻播放速度。k
=
cv.waitKey(25)
&
0xff
#
25ms
內當有鍵盤按下時返回對應按鍵
ASCII
碼,超時返回-1if
k
==
27
or
chr(k)
==
‘q’:
#
當按下
Esc
或者
q
時退出循環。break(1)視頻存儲視頻是由一幀一幀的圖像構成的,當一秒中內切換
24
幀圖像,人眼就會覺得視頻流暢,人們把一秒鐘切換圖像的次數叫做幀率(FPS),如一秒鐘能切換
30
張圖像,則其幀率為
30FPS。為了減少視頻大小,設計了很多視頻壓縮編碼格式,如常見的
MPEG-4、H.264、H.265。將視頻壓縮編碼之后,原來為
4.976
GB
的視頻文件就被壓縮到
50MB
以內,且畫質還原度高。在
OpenCV
中的
VideoWriter
類提供的
API
可以輕松實現視頻編碼壓縮。目前視頻信
息壓縮編碼的方法很多,fourcc
是用于設置壓縮幀的
4
字符編解碼方式代碼。視頻保存示例代碼如下:#!/usr/bin/env
python3
#
-*-
coding:UTF8
-*-
import
cv2
as
cv
import
numpy
as
np#獲取本地攝像頭對象
cap
=
cv.VideoCapture(0)#
指定視頻的編碼格式fourcc
=
cv.VideoWriter_fourcc(*
'XVID')
#
保存到文件,VideWriter
參數說明:#
VideWriter(文件名,
編碼格式,
FPS,
幀大小,isColor),isColor
默認為
True
表示保存彩圖
out
=
cv.VideoWriter('output.avi',
fourcc,
30,
(640,
480))while
cap.isOpened():
ret,
frame
=
cap.read()
if
ret:#
幀翻轉
圖像基本操作圖像運算指以圖像為單位進行的操作,該操作對圖像中的所有像素同樣進行,運算
的結果是一幅其灰度分布與原來參與運算圖像灰度分布不同的新圖像。具體的運算主要
包括算術和邏輯運算,它們通過改變像素的值來得到圖像增強的效果。算術運算是指對兩幅或兩幅以上的輸入圖像中對應像素的灰度值作加、減、乘或除
等運算后,將運算結果作為輸出圖像相應像素的灰度值。這種運算的特點在于:其一,
輸出圖像像素的灰度僅取決于兩幅或兩幅以上的輸入圖像的對應像素灰度值,和點運算out.write(frame)
#
保存視頻幀cv.imshow('frame',
frame)
#
顯示當前幀k
=
cv.waitKey(25)
&
0xFFif
chr(k)
==
'q':
#
按‘q’鍵退出break#
調用
release
函數釋放內存cap.release()out.release()cv.destroyAllWindows()相似,算術運算結果和參與運算像素的鄰域內像素的灰度值無關;其二,算術運算不會
改變像素的空間位置。(1)圖像按位運算圖像的基本運算有很多種,比如兩幅圖像可以相加、相減、相乘、相除、位運算、
平方根、對數、絕對值等。通常在圖像處理過程中需要對圖像截取其中的一部分作為感
興趣的區域(region
of
interest,ROI),按位運算常被廣泛用于
ROI
區域提取。所謂按位運算,就是對圖像像素的二進制形式的每個
bit
進行對應運算。按位運算
通常包括按位與、按位或、按位非和按位異或運算。OpenCV
提供了函數
cv2.
bitwise_and
能將兩幅圖像
src1
與
src2
每個像素值進行位
與運算,并返回處理后的圖像。該函數的用法如表
5-1
所示:表
5-1
位與函數函數名稱cv2.bitwise_and函數原型bitwise_and(src1,
src2[,
dst[,
mask]])
->
dst必填參數src1&src2:輸入的需要按位與的圖像,要求兩幅圖像有相同的類型和大小默認參數dst:與輸入圖像有同樣大小和類型的輸出圖像mask:輸入掩模,可省略參數,必須是
8
位單通道圖像返回值返回位與之后的圖像調用示例output
=
cv2.bitwise_and(source,
mask)函數
cv2.bitwise_not
將輸入圖像
src
每個像素值按位取反,并返回處理后的圖像。
該函數的用法如表
5-2
所示:表
5-2
位或函數函數名稱cv2.
bitwise_not函數原型bitwise_not(src[,
dst[,
mask]])
->
dst必填參數src:輸入的需要按位取反的圖像默認參數dst:與輸入圖像有同樣大小和類型的輸出圖像mask:輸入掩模,可省略參數,必須是
8
位單通道圖像返回值返回位與之后的圖像調用示例output
=
cv2.bitwise_not(source)(2)圖像加法OpenCV
提供了
cv2.add()函數實現圖像相加,使用該函數進行圖像的加法運算時,
相加的兩張圖像應保證
shape
一致。此外圖像的加法運算還可以通過
Numpy
實現,不同的)是
OpenCV
的加法是一種飽和操作,而
Numpy
中的加法是一種模操作,如下面代碼所示:
圖像加法函數中
cv2.addWeighted()函數能做圖像混合,函數的計算公式如下:
(
)
=
(
0(
)
1(
)
+因為兩幅圖片相加的權重不同,所以有混合的效果,通過修改
α
的值(0→1)便可
以實現非常好的混合效果,參考代碼如下所示:數字圖像顏色空間數字圖像中的灰度圖每一個像素都是由一個數字量化的,而彩色圖像的每一個像素
都是由至少三個數字進行量化,因此顏色空間的用途是保證在一個固定的標準下能夠對
某一種顏色加以說明量化。針對不同數字成像系統和領域各自的特點,目前已經存在上x=np.uint8([250])y=np.uint8([10])print(cv2.add(x,y)
#
OpenCV
實現圖像相加[[255]]
#
250+10=260=>255print(x+y)
#
Numpy
實現圖像相加[[4]]
#
250+10=260%256=4img=cv2.addW
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 四川民族學院《中國水墨畫技法》2023-2024學年第二學期期末試卷
- 清遠市清新縣2025屆三年級數學第二學期期末綜合測試試題含解析
- 培黎職業學院《企業管理案例分析》2023-2024學年第二學期期末試卷
- 沈陽師范大學《醫學與法學》2023-2024學年第二學期期末試卷
- 江蘇省南京市棲霞區、雨花區、江寧區重點中學2024-2025學年初三第一次測試英語試題含答案
- 衢州市開化縣2025年數學四年級第二學期期末考試模擬試題含解析
- 江蘇睢寧市2024-2025學年第二學期期末教學質量檢測試題考試高三數學試題含解析
- 濟南歷下區2025屆第二學期質量抽測(5月)初三語文試題試卷(照片版)含解析
- 山西省大同市煤礦第二學校2024-2025學年高三第四次統考英語試題試卷含解析
- 江西機電職業技術學院《數字娛樂產品設計》2023-2024學年第二學期期末試卷
- 天藍色商務發展歷程時間軸PPT模板課件
- 外墻憎水巖棉保溫板施工方案doc
- 門店清潔衛生標準
- 聯想集團財務風險分析及對策論文財務管理專業
- 阿丁尿床了(2)
- 工會會計報表完整版(內有6張表)
- 雙堿法脫硫設計計算
- 增值稅銷售貨物或者提供應稅勞務清單(標準模板)
- 醫用耗材分類目錄 (低值 ╱ 高值)
- competition-model
- 退檔申請書怎樣寫
評論
0/150
提交評論