版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
項(xiàng)目四YOLO模型實(shí)現(xiàn)目標(biāo)檢測(cè)創(chuàng)靈實(shí)驗(yàn)平臺(tái)項(xiàng)目引導(dǎo)介紹
首先,什么是YOLO算法?
YOLO及YouOnlyLookOnce,是一種目標(biāo)檢測(cè)算法,目標(biāo)檢測(cè)任務(wù)的目標(biāo)是找到圖像中的所有感興趣區(qū)域,并確定這些區(qū)域的位置和類別概率。目標(biāo)檢測(cè)領(lǐng)域的深度學(xué)習(xí)方法主要分為兩大類(如右圖所示):兩階段式(Two-stage)目標(biāo)檢測(cè)算法和單階段式(One-stage)目標(biāo)檢測(cè)算法。兩階段式是先由算法生成一系列候選邊界框作為樣本,然后再通過(guò)卷積神經(jīng)網(wǎng)絡(luò)分類這些樣本,也被稱為基于區(qū)域的方法,例如R-CNN、FastR-CNN、FasterR-CNN、R-FCN等;后者則是直接將目標(biāo)邊界定位問(wèn)題轉(zhuǎn)換成回歸問(wèn)題,圖像會(huì)被縮放到同一尺寸,并以網(wǎng)格形式均等劃分,模型僅需處理圖像一次就能得到邊界框坐標(biāo)跟類概率,例如MultiBox、YOLO、SSD等。兩種方法的區(qū)別也導(dǎo)致其性能也不同,前者在檢測(cè)準(zhǔn)確率和定位準(zhǔn)確率方面更優(yōu),而后者勝在算法速度。YOLO是一個(gè)one-stage的目標(biāo)檢測(cè)算法,我們可以將其看作單一的回歸問(wèn)題。YOLO檢測(cè)系統(tǒng)如下圖所示:項(xiàng)目引導(dǎo)介紹YOLOv1:YOLOv1的論文中給出YOLO的主要思想如下:1.我們的系統(tǒng)將輸入圖像劃分為S×S網(wǎng)格,具有分而治之的思想。如果對(duì)象的中心落入網(wǎng)格單元中,則該網(wǎng)格單元負(fù)責(zé)檢測(cè)該對(duì)象。如圖三所示,狗的中心落在了第五行第二列的格子中(紅點(diǎn)所示),那么這個(gè)格子負(fù)責(zé)預(yù)測(cè)狗這個(gè)對(duì)象。這里需要說(shuō)明一下,網(wǎng)格只是劃分圖像中物體的位置,而不是將每個(gè)格子單獨(dú)分離出來(lái),所有的網(wǎng)格還是一個(gè)整體關(guān)系。因此,YOLO在訓(xùn)練和測(cè)試時(shí)都會(huì)全局考慮圖像。項(xiàng)目引導(dǎo)介紹YOLOv1:YOLOv1的論文中給出YOLO的主要思想如下:2.每個(gè)網(wǎng)格需要預(yù)測(cè)B個(gè)boundingbox,每個(gè)boundingbox除了需要預(yù)測(cè)位置坐標(biāo)、預(yù)測(cè)confidence值以外,還需要去預(yù)測(cè)C個(gè)類別的分?jǐn)?shù)。confidence為置信度,是指boundingbox中存在物體的概率;C與數(shù)據(jù)集的類別相關(guān),VOC數(shù)據(jù)集為0,COCO數(shù)據(jù)集為80。每個(gè)邊界框需要預(yù)測(cè)5個(gè)值:x,y,w,h,confidence。(x,y)表示預(yù)測(cè)框相對(duì)于網(wǎng)格單元邊界的中心;(w,h)表示預(yù)測(cè)框相對(duì)于整個(gè)圖像預(yù)測(cè)寬度和高度;置信度表示預(yù)測(cè)框與真實(shí)框之間的IOU。置信度的計(jì)算公式如下所示:Pr(object)表示網(wǎng)格單元中是否有object,如果有object,則為1,否則為0。IOU(b,object)表示真實(shí)框與預(yù)測(cè)框之間的交并比,表示bbox位置的準(zhǔn)確性。網(wǎng)絡(luò)輸出維度為:S×S×(B×5+C)。在YOLOv1中,把圖片劃分為7×7的網(wǎng)格,每個(gè)網(wǎng)格預(yù)測(cè)兩個(gè)BoundingBox,我們采用VOC數(shù)據(jù)集。因此,S=7,B=2,C=20。網(wǎng)絡(luò)的輸出維度為7×7×(2×(4+1)+20)=7×7×30。項(xiàng)目引導(dǎo)介紹YOLOv1:YOLOv1的論文中給出YOLO的網(wǎng)絡(luò)結(jié)構(gòu)如下:那什么是目標(biāo)檢測(cè)呢?項(xiàng)目引導(dǎo)案例目標(biāo)檢測(cè),也叫目標(biāo)提取,是一種基于目標(biāo)幾何和統(tǒng)計(jì)特征的圖像分割。它將目標(biāo)的分割和識(shí)別合二為一,其準(zhǔn)確性和實(shí)時(shí)性是整個(gè)系統(tǒng)的一項(xiàng)重要能力。尤其是在復(fù)雜場(chǎng)景中,需要對(duì)多個(gè)目標(biāo)進(jìn)行實(shí)時(shí)處理時(shí),目標(biāo)自動(dòng)提取和識(shí)別就顯得特別重要。隨著計(jì)算機(jī)技術(shù)的發(fā)展和計(jì)算機(jī)視覺(jué)原理的廣泛應(yīng)用,利用計(jì)算機(jī)圖像處理技術(shù)對(duì)目標(biāo)進(jìn)行實(shí)時(shí)跟蹤研究越來(lái)越熱門,對(duì)目標(biāo)進(jìn)行動(dòng)態(tài)實(shí)時(shí)跟蹤定位在智能化交通系統(tǒng)、智能監(jiān)控系統(tǒng)、軍事目標(biāo)檢測(cè)及醫(yī)學(xué)導(dǎo)航手術(shù)中手術(shù)器械定位等方面具有廣泛的應(yīng)用價(jià)值。機(jī)械臂色塊分揀圖像采集任務(wù)一職業(yè)能力目標(biāo)01任務(wù)描述與要求02任務(wù)分析與計(jì)劃03知識(shí)儲(chǔ)備04任務(wù)實(shí)施05任務(wù)檢查與評(píng)價(jià)06任務(wù)小結(jié)07任務(wù)拓展08任務(wù)一機(jī)械臂色塊分揀圖像采集掌握?qǐng)D像數(shù)據(jù)采集方法與要求;學(xué)習(xí)常用圖像數(shù)據(jù)采集的方法;了解并學(xué)習(xí)opencv保存圖像的方法;掌握基于opencv的色塊圖像采集自動(dòng)化腳本編寫。了解常用圖像數(shù)據(jù)采集方法;了解并掌握opencv保存圖像方法;掌握基于opencv的色塊圖像采集自動(dòng)化腳本編寫。職業(yè)能力目標(biāo)01實(shí)驗(yàn)?zāi)康膶?shí)驗(yàn)內(nèi)容職業(yè)能力目標(biāo)01任務(wù)描述與要求02任務(wù)分析與計(jì)劃03知識(shí)儲(chǔ)備04任務(wù)實(shí)施05任務(wù)檢查與評(píng)價(jià)06任務(wù)小結(jié)07任務(wù)拓展08任務(wù)一機(jī)械臂色塊分揀圖像采集
此任務(wù)要求同學(xué)們掌握?qǐng)D像數(shù)據(jù)采集方法與要求,學(xué)習(xí)常用圖像數(shù)據(jù)采集的方法,了解并學(xué)習(xí)opencv保存圖像的方法,并掌握基于opencv的色塊圖像采集自動(dòng)化腳本編寫。任務(wù)描述任務(wù)要求了解常用圖像數(shù)據(jù)采集方法,學(xué)習(xí)五個(gè)方法;了解并掌握opencv保存圖像方法,能夠根據(jù)實(shí)驗(yàn)實(shí)現(xiàn)opencv保存圖像,并能設(shè)置自動(dòng)保存和手動(dòng)保存;完成編寫基于opencv的色塊圖像采集自動(dòng)化腳本。任務(wù)描述與要求02職業(yè)能力目標(biāo)01任務(wù)描述與要求02任務(wù)分析與計(jì)劃03知識(shí)儲(chǔ)備04任務(wù)實(shí)施05任務(wù)檢查與評(píng)價(jià)06任務(wù)小結(jié)07任務(wù)拓展08任務(wù)一機(jī)械臂色塊分揀圖像采集任務(wù)分析在引導(dǎo)案例里,我們介紹了目標(biāo)檢測(cè)算法,思考一下完成目標(biāo)檢測(cè)有哪些步驟,我們要怎么去做?根據(jù)自己的了解,要怎樣去了解認(rèn)識(shí)目標(biāo)檢測(cè)算法,可以促進(jìn)自己進(jìn)一步地學(xué)習(xí)?任務(wù)分析與計(jì)劃03任務(wù)計(jì)劃表項(xiàng)目名稱創(chuàng)靈實(shí)驗(yàn)平臺(tái)任務(wù)名稱機(jī)械臂色塊分揀圖像采集計(jì)劃方式自主設(shè)計(jì)計(jì)劃要求請(qǐng)用6個(gè)計(jì)劃步驟來(lái)完整描述出如何完成本次任務(wù)序號(hào)任務(wù)計(jì)劃1
2
3
4
5
6
通過(guò)上面的思考,你是否對(duì)本任務(wù)要完成的工作有所了解?讓我們一起來(lái)制訂完成本次任務(wù)的實(shí)施計(jì)劃吧!任務(wù)分析與計(jì)劃03職業(yè)能力目標(biāo)01任務(wù)描述與要求02任務(wù)分析與計(jì)劃03知識(shí)儲(chǔ)備04任務(wù)實(shí)施05任務(wù)檢查與評(píng)價(jià)06任務(wù)小結(jié)07任務(wù)拓展08任務(wù)一機(jī)械臂色塊分揀圖像采集opencv204知識(shí)儲(chǔ)備數(shù)據(jù)集1數(shù)據(jù)集04
數(shù)據(jù)集,又稱為資料集、數(shù)據(jù)集合或資料集合,是一種由數(shù)據(jù)所組成的集合。
Dataset(或dataset)是一個(gè)數(shù)據(jù)的集合,通常以表格形式出現(xiàn)。每一列代表一個(gè)特定變量。每一行都對(duì)應(yīng)于某一成員的數(shù)據(jù)集的問(wèn)題。它列出的價(jià)值觀為每一個(gè)變量,如身高和體重的一個(gè)物體或價(jià)值的隨機(jī)數(shù)。每個(gè)數(shù)值被稱為數(shù)據(jù)資料。對(duì)應(yīng)于行數(shù),該數(shù)據(jù)集的數(shù)據(jù)可能包括一個(gè)或多個(gè)成員。原理與分類04數(shù)據(jù)集
從歷史上看,這個(gè)術(shù)語(yǔ)起源于大型機(jī)領(lǐng)域,在那里它有一個(gè)明確界定的意義,非常接近現(xiàn)代的計(jì)算機(jī)檔案。這個(gè)主題是不包括在這里的。最簡(jiǎn)單的情況下,只有一個(gè)變量,然后在數(shù)據(jù)集由一列列的數(shù)值組成,往往被描述為一個(gè)列表。盡管名稱,這樣一個(gè)單數(shù)據(jù)集不是一套通常的數(shù)學(xué)意義,因?yàn)槟骋粋€(gè)指定數(shù)值,可能會(huì)出現(xiàn)多次。通常的順序并不重要,然后這樣數(shù)值的集合可能被視為多重集,而不是(順序)列表。值可能是數(shù)字,例如真正的數(shù)字或整數(shù),例如代表一個(gè)人的身高多少厘米,但也可能是象征性的數(shù)據(jù)(即不包括數(shù)字),例如代表一個(gè)人的種族問(wèn)題。更一般的說(shuō),價(jià)值可以是任何類型描述為某種程度的測(cè)量。對(duì)于每一個(gè)變量,通常所有的值都是同類。但是也可能是“遺漏值”,其中需要指出的某種方式。原理與分類04數(shù)據(jù)集
數(shù)據(jù)集可以分成類型化數(shù)據(jù)集與非類型化數(shù)據(jù)集。類型化數(shù)據(jù)集:這種數(shù)據(jù)集先從基DataSet類派生,然后,使用XML架構(gòu)文件(.xsd文件)中的信息生成新類。架構(gòu)中的信息(表、列等)被作為一組第一類對(duì)象和屬性生成并編譯為此新數(shù)據(jù)集類??梢灾苯油ㄟ^(guò)名稱引用表和列,在VS.NET中可以智能感知元素的類型。非類型化數(shù)據(jù)集:這種數(shù)據(jù)集沒(méi)有相應(yīng)的內(nèi)置架構(gòu)。與類型化數(shù)據(jù)集一樣,非類型化數(shù)據(jù)集也包含表、列等,但它們只作為集合公開。需要通過(guò)Tables集合引用列。04(注:請(qǐng)打開JupyterLab項(xiàng)目四:YOLO模型實(shí)現(xiàn)目標(biāo)檢測(cè)第一節(jié))常用圖像數(shù)據(jù)采集方法獲取圖像數(shù)據(jù)集方法:1).開源數(shù)據(jù)集和代碼開源一樣,隨著人工智能的發(fā)展,數(shù)據(jù)這種人工智能時(shí)代重要的資源已經(jīng)有越來(lái)越多的公開資源了??梢灾苯酉螺d進(jìn)行對(duì)應(yīng)需求的模型訓(xùn)練,如手寫字?jǐn)?shù)據(jù)集MNIST,目標(biāo)檢測(cè)數(shù)據(jù)集COCO,人臉識(shí)別LWF等都是各自領(lǐng)域比較熱門的公開數(shù)據(jù)集;04(注:請(qǐng)打開JupyterLab項(xiàng)目四:YOLO模型實(shí)現(xiàn)目標(biāo)檢測(cè)第一節(jié))常用圖像數(shù)據(jù)采集方法獲取圖像數(shù)據(jù)集方法:2).網(wǎng)絡(luò)爬蟲互聯(lián)網(wǎng)的發(fā)展,網(wǎng)絡(luò)上有很多的數(shù)據(jù)資源,圖片也不例外,而從網(wǎng)絡(luò)上高效獲取圖片的方法是使用網(wǎng)絡(luò)爬蟲工具,所以,網(wǎng)絡(luò)爬蟲也是一種獲取圖片數(shù)據(jù)的方法之一;04(注:請(qǐng)打開JupyterLab項(xiàng)目四:YOLO模型實(shí)現(xiàn)目標(biāo)檢測(cè)第一節(jié))常用圖像數(shù)據(jù)采集方法獲取圖像數(shù)據(jù)集方法:3).攝像采集有時(shí)候有些人工智能應(yīng)用場(chǎng)景可能比較難找到合適的且符合場(chǎng)景的數(shù)據(jù)集,這時(shí)候就需要根據(jù)實(shí)際的場(chǎng)景進(jìn)行數(shù)據(jù)采集,而采集的方法場(chǎng)景的就是使用攝像頭進(jìn)行需要的數(shù)據(jù)采集;04(注:請(qǐng)打開JupyterLab項(xiàng)目四:YOLO模型實(shí)現(xiàn)目標(biāo)檢測(cè)第一節(jié))常用圖像數(shù)據(jù)采集方法獲取圖像數(shù)據(jù)集方法:4).視頻獲取有些時(shí)候需要的圖片數(shù)據(jù)可能在一幀幀的視頻里,這時(shí)候就需要從視頻里將圖像數(shù)據(jù)提取出來(lái)。04(注:請(qǐng)打開JupyterLab項(xiàng)目四:YOLO模型實(shí)現(xiàn)目標(biāo)檢測(cè)第一節(jié))常用圖像數(shù)據(jù)采集方法獲取圖像數(shù)據(jù)集方法:5).攝像頭圖像數(shù)據(jù)采集攝像頭在進(jìn)行圖像數(shù)據(jù)采集時(shí)候,需要結(jié)合軟件進(jìn)行相應(yīng)的采集與處理,本次實(shí)驗(yàn)是使用opencv計(jì)算機(jī)視覺(jué)處理庫(kù),通過(guò)編寫Python代碼半自動(dòng)的進(jìn)行圖片數(shù)據(jù)采集,采集符合要求的數(shù)據(jù),減少數(shù)據(jù)清洗的工作量。05知識(shí)儲(chǔ)備opencv2數(shù)據(jù)集1304什么是opencv?
OpenCV是一個(gè)基于Apache2.0許可(開源)發(fā)行的跨平臺(tái)計(jì)算機(jī)視覺(jué)和機(jī)器學(xué)習(xí)軟件庫(kù),可以運(yùn)行在Linux、Windows、Android和MacOS操作系統(tǒng)上。它輕量級(jí)而且高效——由一系列C函數(shù)和少量C++類構(gòu)成,同時(shí)提供了Python、Ruby、MATLAB等語(yǔ)言的接口,實(shí)現(xiàn)了圖像處理和計(jì)算機(jī)視覺(jué)方面的很多通用算法。大家在生活中有哪些地方遇到過(guò)或者使用過(guò)opencv的地方嗎?04思考一下,我們?cè)谶^(guò)去學(xué)習(xí)代碼的時(shí)候有使用過(guò)opencv嗎?什么是opencv?
OpenCV用C++語(yǔ)言編寫,它具有C++,Python,Java和MATLAB接口,并支持Windows,Linux,Android和MacOS,OpenCV主要傾向于實(shí)時(shí)視覺(jué)應(yīng)用,并在可用時(shí)利用MMX和SSE指令,如今也提供對(duì)于C#、Ch、Ruby,GO的支持。歷史發(fā)展04OpenCV
OpenCV擁有包括500多個(gè)C函數(shù)的跨平臺(tái)的中、高層API。它不依賴于其它的外部庫(kù)——盡管也可以使用某些外部庫(kù)。OpenCV為Intel?IntegratedPerformancePrimitives(IPP)提供了透明接口。這意味著如果有為特定處理器優(yōu)化的IPP庫(kù),OpenCV將在運(yùn)行時(shí)自動(dòng)加載這些庫(kù)。(注:OpenCV2.0版的代碼已顯著優(yōu)化,無(wú)需IPP來(lái)提升性能,故2.0版不再提供IPP接口)最新版本是4.5。1999年1月,CVL項(xiàng)目啟動(dòng)。主要目標(biāo)是人機(jī)界面,能被UI調(diào)用的實(shí)時(shí)計(jì)算機(jī)視覺(jué)庫(kù),為Intel處理器做了特定優(yōu)化。2000年6月,第一個(gè)開源版本OpenCValpha3發(fā)布。2000年12月,針對(duì)linux平臺(tái)的OpenCVbeta1發(fā)布。2006年,支持MacOS的OpenCV1.0發(fā)布。歷史發(fā)展04OpenCV
2009年9月,OpenCV1.2(beta2.0)發(fā)布。2009年10月1日,Version2.0發(fā)布。2010年12月6日,OpenCV2.2發(fā)布。2011年8月,OpenCV2.3發(fā)布。2012年4月2日,發(fā)布OpenCV2.4。2014年8月21日,發(fā)布OpenCv3.0alpha。2014年11月11日,發(fā)布OpenCV3.0beta。2015年6月4日,發(fā)布OpenCV3.0。2016年12月,發(fā)布OpenCV3.2版(合并969個(gè)修補(bǔ)程序,關(guān)閉478個(gè)問(wèn)題)2017年8月3日,發(fā)布OpenCV3.3版(最重要的更新是把DNN模塊從contrib里面提到主倉(cāng)庫(kù))歷史發(fā)展04OpenCV
OpenCV使用類BSDlicense,所以對(duì)非商業(yè)應(yīng)用和商業(yè)應(yīng)用都是免費(fèi)(FREE)的。(細(xì)節(jié)參考license)OpenCV提供的視覺(jué)處理算法非常豐富,并且它部分以C語(yǔ)言編寫,加上其開源的特性,處理得當(dāng),不需要添加新的外部支持也可以完整的編譯鏈接生成執(zhí)行程序,所以很多人用它來(lái)做算法的移植,OpenCV的代碼經(jīng)過(guò)適當(dāng)改寫可以正常的運(yùn)行在DSP系統(tǒng)和ARM嵌入式系統(tǒng)中,這種移植在大學(xué)中經(jīng)常作為相關(guān)專業(yè)本科生畢業(yè)設(shè)計(jì)或者研究生課題的選題。優(yōu)勢(shì)04OpenCV
計(jì)算機(jī)視覺(jué)市場(chǎng)巨大而且持續(xù)增長(zhǎng),且這方面沒(méi)有標(biāo)準(zhǔn)API,如今的計(jì)算機(jī)視覺(jué)軟件大概有以下三種:1、研究代碼(慢,不穩(wěn)定,獨(dú)立并與其他庫(kù)不兼容)2、耗費(fèi)很高的商業(yè)化工具(比如Halcon,MATLAB+Simulink)3、依賴硬件的一些特別的解決方案(比如視頻監(jiān)控,制造控制系統(tǒng),醫(yī)療設(shè)備)這是如今的現(xiàn)狀,而標(biāo)準(zhǔn)的API將簡(jiǎn)化計(jì)算機(jī)視覺(jué)程序和解決方案的開發(fā),OpenCV致力于成為這樣的標(biāo)準(zhǔn)API。OpenCV致力于真實(shí)世界的實(shí)時(shí)應(yīng)用,通過(guò)優(yōu)化的C代碼的編寫對(duì)其執(zhí)行速度帶來(lái)了可觀的提升,并且可以通過(guò)購(gòu)買Intel的IPP高性能多媒體函數(shù)庫(kù)(IntegratedPerformancePrimitives)得到更快的處理速度。職業(yè)能力目標(biāo)01任務(wù)描述與要求02任務(wù)分析與計(jì)劃03知識(shí)儲(chǔ)備04任務(wù)實(shí)施05任務(wù)檢查與評(píng)價(jià)06任務(wù)小結(jié)07任務(wù)拓展08任務(wù)一機(jī)械臂色塊分揀圖像采集基于opencv的色塊圖像采集自動(dòng)化腳本編寫204任務(wù)實(shí)施opencv保存圖像方法1機(jī)械臂色塊分揀圖像采集任務(wù)一opencv保存圖像方法(詳細(xì)實(shí)驗(yàn)請(qǐng)參考第四章中任務(wù)一部分)我們?cè)撊ト绾瓮瓿蓪?shí)驗(yàn)?zāi)兀?/p>
需求描述:通過(guò)opencv調(diào)用攝像頭,每10秒保存當(dāng)前捕獲的圖片,并按順序進(jìn)行命名,保存10張后停止。具體步驟如下:步驟一:導(dǎo)入必要的依賴庫(kù):importcv2importtimefromthreadingimportThreadimportipywidgetsaswidgets
fromIPython.displayimportdisplay機(jī)械臂色塊分揀圖像采集任務(wù)一opencv保存圖像方法(詳細(xì)實(shí)驗(yàn)請(qǐng)參考第四章中任務(wù)一部分)我們?cè)撊ト绾瓮瓿蓪?shí)驗(yàn)?zāi)兀?/p>
需求描述:通過(guò)opencv調(diào)用攝像頭,每10秒保存當(dāng)前捕獲的圖片,并按順序進(jìn)行命名,保存10張后停止。具體步驟如下:步驟二:編寫線程異步函數(shù)裝飾器:defasync_call(fn):
"""異步裝飾器:paramfn:函數(shù):return:"""def
wrapper(*args,**kwargs):th=Thread(target=fn,args=args,kwargs=kwargs)th.start()returnwrapper機(jī)械臂色塊分揀圖像采集任務(wù)一opencv保存圖像方法(詳細(xì)實(shí)驗(yàn)請(qǐng)參考第四章中任務(wù)一部分)我們?cè)撊ト绾瓮瓿蓪?shí)驗(yàn)?zāi)兀?/p>
需求描述:通過(guò)opencv調(diào)用攝像頭,每10秒保存當(dāng)前捕獲的圖片,并按順序進(jìn)行命名,保存10張后停止。具體步驟如下:步驟三:構(gòu)建顯示圖像函數(shù):image=widgets.Image(format='jpg',height=480,width=640)機(jī)械臂色塊分揀圖像采集任務(wù)一opencv保存圖像方法(詳細(xì)實(shí)驗(yàn)請(qǐng)參考第四章中任務(wù)一部分)步驟四:編寫opencv調(diào)用攝像頭函數(shù):
1.cv2.VideoCapture(0)調(diào)用設(shè)備攝像頭的功能2.capture.read()讀取一幀的圖片
3.cv2.imencode('.jpg',frame)[1].tobytes()讀取圖像數(shù)據(jù)并轉(zhuǎn)換成圖片格式并轉(zhuǎn)成bytes數(shù)據(jù)。@async_calldef
save_img():#保存圖像函數(shù)capture=cv2.VideoCapture(0)#采集圖像
globalret,frame
whileTrue:ret,frame=capture.read()#讀取圖像
ifnotret:time.sleep(2)
continueimgbox=cv2.imencode('.jpg',frame)[1].tobytes()
globalimageimage.value=imgbox機(jī)械臂色塊分揀圖像采集任務(wù)一opencv保存圖像方法(詳細(xì)實(shí)驗(yàn)請(qǐng)參考第四章中任務(wù)一部分)步驟四:編寫opencv調(diào)用攝像頭函數(shù):
1.cv2.VideoCapture(0)調(diào)用設(shè)備攝像頭的功能2.capture.read()讀取一幀的圖片
3.cv2.imencode('.jpg',frame)[1].tobytes()讀取圖像數(shù)據(jù)并轉(zhuǎn)換成圖片格式并轉(zhuǎn)成bytes數(shù)據(jù)。機(jī)械臂色塊分揀圖像采集任務(wù)一opencv保存圖像方法(詳細(xì)實(shí)驗(yàn)請(qǐng)參考第四章中任務(wù)一部分)步驟四:編寫opencv調(diào)用攝像頭函數(shù):
1.cv2.VideoCapture(0)調(diào)用設(shè)備攝像頭的功能2.capture.read()讀取一幀的圖片
3.cv2.imencode('.jpg',frame)[1].tobytes()讀取圖像數(shù)據(jù)并轉(zhuǎn)換成圖片格式并轉(zhuǎn)成bytes數(shù)據(jù)。機(jī)械臂色塊分揀圖像采集任務(wù)一opencv保存圖像方法(詳細(xì)實(shí)驗(yàn)請(qǐng)參考第四章中任務(wù)一部分)動(dòng)手練習(xí)1:1.在<1>處,填寫opencv使用usb攝像頭代碼。2.在<2>處,填寫將opencv讀取圖像數(shù)據(jù)并轉(zhuǎn)換成圖片格式并轉(zhuǎn)成bytes數(shù)據(jù)。@async_calldefsave_img():
<1>
globalret,frame
whileTrue:ret,frame=capture.read()
ifnotret:time.sleep(2)
continue
<2>
globalimageimage.value=imgbox機(jī)械臂色塊分揀圖像采集任務(wù)一opencv保存圖像方法(詳細(xì)實(shí)驗(yàn)請(qǐng)參考第四章中任務(wù)一部分)步驟五:保存圖像前先清空save_img文件夾:#慎重執(zhí)行,否則會(huì)清空你采集好的圖像數(shù)據(jù)!rm-rf./save_img/*.png機(jī)械臂色塊分揀圖像采集任務(wù)一opencv保存圖像方法(詳細(xì)實(shí)驗(yàn)請(qǐng)參考第四章中任務(wù)一部分)步驟六:顯示圖像與保存圖像:采集圖像建議使用電腦與開發(fā)板直連的方式進(jìn)行,電腦使用無(wú)線方式連接路由在采集圖片時(shí)會(huì)因?yàn)閭鬏斣驍z像頭畫面延遲比較嚴(yán)重。frame=None#圖像全局變量ret=Nonesave_img()#執(zhí)行調(diào)用攝像頭獲取圖片函數(shù)display(image)#顯示圖片num=1#計(jì)數(shù)變量whileTrue:image_name='./save_img/'+str(num)+'.png'#圖片名稱構(gòu)建,將圖片保存在save_img目錄ifnotret:continuecv2.imwrite(image_name,frame)#保存圖片print(str(num)+'.png')num+=1time.sleep(2)ifnum>10:#大于10張圖片后退出循環(huán)print("圖像采集完畢!")break注意:圖像采集完畢,重啟內(nèi)核,釋放攝像頭資源,防止占用攝像頭導(dǎo)致后續(xù)實(shí)驗(yàn)無(wú)法進(jìn)行。如圖所示。機(jī)械臂色塊分揀圖像采集任務(wù)一opencv保存圖像方法(詳細(xì)實(shí)驗(yàn)請(qǐng)參考第四章中任務(wù)一部分)動(dòng)手練習(xí)2:在上面的opencv保存圖片代碼的基礎(chǔ)上,修改下代碼,讓其可以通過(guò)手動(dòng)控制進(jìn)行圖片保存(將攝像頭變成一部自制的照相機(jī))。1.在<1>處,添加代碼,是TakePhoto具備異步的功能。2.在<2>處,添加代碼,保證照相開關(guān)可以正?;謴?fù)。2.在<3>處,添加代碼,使圖片可以正常保存。機(jī)械臂色塊分揀圖像采集任務(wù)一opencv保存圖像方法(詳細(xì)實(shí)驗(yàn)請(qǐng)參考第四章中任務(wù)一部分)動(dòng)手練習(xí)2:frame=None#圖像全局變量save_img()#執(zhí)行調(diào)用攝像頭獲取圖片函數(shù)display(image)#顯示圖片take_photo=None#照相開關(guān)exit_var=None#退出開關(guān)
<1>defTakePhoto():global<2>print("等待照相.....")num=1#計(jì)數(shù)變量whileTrue:image_name='./save_img/'+str(num)+'.png'#圖片名稱構(gòu)建,將圖片保存在save_img目錄if(frameisNone):continueiftake_photo:#照相開關(guān)打開機(jī)械臂色塊分揀圖像采集任務(wù)一opencv保存圖像方法(詳細(xì)實(shí)驗(yàn)請(qǐng)參考第四章中任務(wù)一部分)動(dòng)手練習(xí)2:<3>print("{0}拍照成功".format(str(num)+'.png'))num+=1take_photo=Noneprint("等待照相.....")ifexit_var:#退出循環(huán)breakdefbutton():'''照相按鈕'''globaltake_phototake_photo=True
TakePhoto()機(jī)械臂色塊分揀圖像采集任務(wù)一opencv保存圖像方法(詳細(xì)實(shí)驗(yàn)請(qǐng)參考第四章中任務(wù)一部分)動(dòng)手練習(xí)2:#慎重執(zhí)行,否則會(huì)清空你采集好的圖像數(shù)據(jù)!rm-rf./save_img/*.png保存圖像前先清空save_img文件夾。重復(fù)執(zhí)行button按鈕代碼框,可重復(fù)拍照。button()05任務(wù)實(shí)施2opencv保存圖像方法13基于opencv的色塊圖像采集自動(dòng)化腳本編寫色塊圖像采集實(shí)驗(yàn)教學(xué)分析我們要怎么設(shè)置使用opencv?我們要怎么去通過(guò)opencv去進(jìn)行色塊圖像采集自動(dòng)化?在生活中有哪些運(yùn)用到了色塊圖像采集自動(dòng)化?基于opencv的色塊圖像采集自動(dòng)化腳本編寫05通過(guò)上面的思考,你是否對(duì)本任務(wù)要完成的任務(wù)有所了解?讓我們一起來(lái)學(xué)習(xí)如何使用基于opencv的色塊圖像采集自動(dòng)化腳本編寫吧!05基于opencv的色塊圖像采集自動(dòng)化腳本編寫基于opencv的色塊圖像采集自動(dòng)化腳本編寫05步驟一:導(dǎo)入必要依賴庫(kù)importcv2importtimefromthreadingimportThreadimportipywidgetsaswidgetsfromIPython.displayimportdisplay
接下來(lái)我們要基于opencv進(jìn)行色塊圖像采集,那么我們要怎樣去實(shí)現(xiàn)他呢?基于opencv的色塊圖像采集自動(dòng)化腳本編寫05步驟二:編寫線程異步裝飾器函數(shù)defasync_call(fn):"""異步裝飾器:paramfn:函數(shù):return:"""defwrapper(*args,**kwargs):th=Thread(target=fn,args=args,kwargs=kwargs)th.start()returnwrapper
接下來(lái)我們要基于opencv進(jìn)行色塊圖像采集,那么我們要怎樣去實(shí)現(xiàn)他呢?基于opencv的色塊圖像采集自動(dòng)化腳本編寫05步驟三:構(gòu)建顯示圖像窗口image=widgets.Image(format='jpg',height=480,width=640)
接下來(lái)我們要基于opencv進(jìn)行色塊圖像采集,那么我們要怎樣去實(shí)現(xiàn)他呢?步驟四:編寫opencv調(diào)用攝像頭函數(shù)@async_calldefsave_img():capture=cv2.VideoCapture(0)globalframewhileTrue:ret,frame=capture.read()ifnotret:time.sleep(2)continueimgbox=cv2.imencode('.jpg',frame)[1].tobytes()globalimageimage.value=imgbox基于opencv的色塊圖像采集自動(dòng)化腳本編寫05步驟五:定義采集參數(shù)1、color_list要采集色塊的顏色種類2、單種顏色采集圖片數(shù)量3、take_img保存圖片開關(guān)color_list=["green","yellow","red","blue"]img_num=100take_img=None
接下來(lái)我們要基于opencv進(jìn)行色塊圖像采集,那么我們要怎樣去實(shí)現(xiàn)他呢?基于opencv的色塊圖像采集自動(dòng)化腳本編寫05步驟六:定義功能函數(shù)@async_calldefcollect():globaltake_imgforcincolor_list:foriinrange(1,img_num+1):image_name='./image/'+c+'_'+str(i)+'.png'print("等待{0}保存".format(c+'_'+str(i)+'.png'))whileTrue:iftake_img:cv2.imwrite(image_name,frame)#保存圖片print("{0}保存成功".format(c+'_'+str(i)+'.png'))print("*"*30)take_img=Nonebreak
接下來(lái)我們要基于opencv進(jìn)行色塊圖像采集,那么我們要怎樣去實(shí)現(xiàn)他呢?基于opencv的色塊圖像采集自動(dòng)化腳本編寫05步驟七:定義保存圖片開關(guān)defbutton():globaltake_imgtake_img=True
接下來(lái)我們要基于opencv進(jìn)行色塊圖像采集,那么我們要怎樣去實(shí)現(xiàn)他呢?步驟八:定義保存圖片開關(guān)frame=Nonesave_img()display(image)collect()
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025-2030全球風(fēng)電用工業(yè)碳刷行業(yè)調(diào)研及趨勢(shì)分析報(bào)告
- 2025-2030全球服裝金屬探測(cè)器行業(yè)調(diào)研及趨勢(shì)分析報(bào)告
- 2025年全球及中國(guó)高性能航空涂料行業(yè)頭部企業(yè)市場(chǎng)占有率及排名調(diào)研報(bào)告
- 2025年全球及中國(guó)眼科手術(shù)剪行業(yè)頭部企業(yè)市場(chǎng)占有率及排名調(diào)研報(bào)告
- 2025公路工程進(jìn)度、計(jì)量、合同管理監(jiān)理內(nèi)容
- 餐桌茶幾家具買賣合同
- 年貨物運(yùn)輸合同范本
- 2025合同模板合伙協(xié)議范本
- 大米購(gòu)銷的合同
- 物聯(lián)網(wǎng)系統(tǒng)定制與開發(fā)合同
- 渠道管理就這樣做
- 大客戶銷售這樣說(shuō)這樣做
- 精裝修樣板房房屋使用說(shuō)明
- 喬遷新居結(jié)婚典禮主持詞
- 小學(xué)四年級(jí)數(shù)學(xué)競(jìng)賽試題(附答案)
- 魯科版高中化學(xué)必修2全冊(cè)教案
- 《病理學(xué)基礎(chǔ)》知識(shí)考核試題題庫(kù)與答案
- 人口分布 高一地理下學(xué)期人教版 必修第二冊(cè)
- 四年級(jí)上冊(cè)英語(yǔ)試題-Module 9 Unit 1 What happened to your head--外研社(一起)(含答案)
- 子宮內(nèi)膜異位癥診療指南
- 《高級(jí)計(jì)量經(jīng)濟(jì)學(xué)》-上課講義課件
評(píng)論
0/150
提交評(píng)論