邊緣智能計(jì)算應(yīng)用課件:目標(biāo)檢測(cè)算法接口的應(yīng)用_第1頁
邊緣智能計(jì)算應(yīng)用課件:目標(biāo)檢測(cè)算法接口的應(yīng)用_第2頁
邊緣智能計(jì)算應(yīng)用課件:目標(biāo)檢測(cè)算法接口的應(yīng)用_第3頁
邊緣智能計(jì)算應(yīng)用課件:目標(biāo)檢測(cè)算法接口的應(yīng)用_第4頁
邊緣智能計(jì)算應(yīng)用課件:目標(biāo)檢測(cè)算法接口的應(yīng)用_第5頁
已閱讀5頁,還剩56頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

邊緣計(jì)算算法SDK應(yīng)用(基于RockX)邊緣智能計(jì)算應(yīng)用項(xiàng)目引導(dǎo)案例Rock-XSDK是基于RK3399Pro/RK180X平臺(tái)的一套AI組件庫(kù)。開發(fā)者通過Rock-XSDK提供的API接口能夠快速構(gòu)建AI應(yīng)用。Rock-XSDK當(dāng)前支持Python/C編程語言,支持運(yùn)行于RK3399ProAndroid/Linux平臺(tái)、RK180XLinux平臺(tái)以及PCLinux/MacOS/Windows(需要接RK1808計(jì)算棒)。項(xiàng)目引導(dǎo)案例當(dāng)前版本為1.2.0的版本,提供幾大類別算法功能,主要包括目標(biāo)檢測(cè),人臉,車牌,人體關(guān)鍵點(diǎn)等,具體如下:項(xiàng)目引導(dǎo)案例在RK3399Pro為核心的開發(fā)板平臺(tái)上,SDK所提供的庫(kù)和應(yīng)用程序需要RKNN驅(qū)動(dòng)版本為1.2.0以上。在開發(fā)板Android/Linux系統(tǒng)平臺(tái)上運(yùn)行Demo應(yīng)用以后,通過日志能夠看到如下的驅(qū)動(dòng)信息,請(qǐng)確保DRV版本為1.2.0以上。系統(tǒng)依賴項(xiàng)目引導(dǎo)案例根據(jù)提供的RockX-*-py3-none-any.whlPythonRockX算法SDK安裝包(默認(rèn)開發(fā)板上已經(jīng)安裝1.2.0版本,慎重更新),新版本請(qǐng)到相關(guān)網(wǎng)站下載,將其上傳到開發(fā)板中,在root用戶下,利用pip3命令進(jìn)行安裝:安裝wheel包pip3installRockX-*-py3-none-any.whl項(xiàng)目引導(dǎo)案例本項(xiàng)目將帶著大家體驗(yàn)邊緣計(jì)算算法SDK應(yīng)用(基于RockX),主要任務(wù)有:目標(biāo)檢測(cè)算法接口應(yīng)用人臉識(shí)別算法接口應(yīng)用人體關(guān)鍵點(diǎn)算法接口應(yīng)用車牌識(shí)別算法接口應(yīng)用項(xiàng)目中所涉及的操作過程主要如下圖所示:目標(biāo)檢測(cè)算法接口應(yīng)用人臉識(shí)別算法接口應(yīng)用人體關(guān)鍵點(diǎn)算法接口應(yīng)用車牌識(shí)別算法接口應(yīng)用目標(biāo)檢測(cè)算法接口的應(yīng)用

邊緣智能計(jì)算應(yīng)用職業(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

目標(biāo)檢測(cè)算法接口的應(yīng)用了解目標(biāo)檢測(cè)含義和應(yīng)用場(chǎng)景;了解RockX目標(biāo)檢測(cè)算法;了解利用多線程調(diào)用算法。掌握USB攝像頭采集圖像;掌握目標(biāo)檢測(cè)算法接口的定義;掌握目標(biāo)檢測(cè)算法接口的調(diào)用并識(shí)別圖片;掌握多線程方式實(shí)現(xiàn)視頻流的目標(biāo)檢測(cè)。職業(yè)能力目標(biāo)01知識(shí)目標(biāo)技能目標(biāo)職業(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

目標(biāo)檢測(cè)算法接口的應(yīng)用

此任務(wù)的主要內(nèi)容是了解目標(biāo)檢測(cè)定義和應(yīng)用場(chǎng)景,掌握RockX目標(biāo)檢測(cè)算法接口的定義與使用的相關(guān)知識(shí),實(shí)現(xiàn)多線程調(diào)用算法進(jìn)行圖像識(shí)別,通過本次學(xué)習(xí),掌握目標(biāo)檢測(cè)算法接口的應(yīng)用。任務(wù)描述任務(wù)要求完成目標(biāo)檢測(cè)算法接口的定義和使用;完成多線程方式實(shí)現(xiàn)視頻流的目標(biāo)檢測(cè)。任務(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

目標(biāo)檢測(cè)算法接口的應(yīng)用任務(wù)分析應(yīng)用目標(biāo)檢測(cè)算法接口會(huì)涉及到哪些步驟?如何使用多線程實(shí)現(xiàn)視頻流的目標(biāo)檢測(cè)?任務(wù)分析與計(jì)劃03任務(wù)計(jì)劃表項(xiàng)目名稱邊緣計(jì)算算法SDK應(yīng)用(基于RockX)任務(wù)名稱目標(biāo)檢測(cè)算法接口的應(yīng)用計(jì)劃方式自主設(shè)計(jì)計(jì)劃要求請(qǐng)用8個(gè)計(jì)劃步驟來完整描述出如何完成本次任務(wù)序號(hào)任務(wù)計(jì)劃1

2

3

45678通過上面的思考,你是否對(duì)本任務(wù)要完成的工作有所了解?讓我們一起來制訂完成本次任務(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

目標(biāo)檢測(cè)算法接口的應(yīng)用RockX目標(biāo)檢測(cè)算法的簡(jiǎn)介204知識(shí)儲(chǔ)備目標(biāo)檢測(cè)含義和應(yīng)用場(chǎng)景11目標(biāo)檢測(cè)的含義2目標(biāo)檢測(cè)的應(yīng)用場(chǎng)景04目標(biāo)檢測(cè)是指通過編寫特定的算法代碼,讓計(jì)算機(jī)從一張圖像中找出若干特定目標(biāo)的方法。04目標(biāo)檢測(cè)的含義目標(biāo)檢測(cè)包含兩層含義:1.判定圖像上有哪些目標(biāo)物體,解決目標(biāo)物體存在性的問題;2.判定圖像中目標(biāo)物體的具體位置,解決目標(biāo)物體在哪里的問題。04目標(biāo)檢測(cè)的含義目標(biāo)檢測(cè)和圖像分類最大的區(qū)別在于目標(biāo)檢測(cè)需要做更細(xì)粒度的判定,不僅要判定是否包含目標(biāo)物體,還要給出各個(gè)目標(biāo)物體的具體位置。。04目標(biāo)檢測(cè)的含義目標(biāo)檢測(cè)圖像分析1

目標(biāo)檢測(cè)的含義2目標(biāo)檢測(cè)的應(yīng)用場(chǎng)景04目標(biāo)檢測(cè)作為場(chǎng)景理解的重要組成部分,廣泛應(yīng)用于現(xiàn)代生活的許多領(lǐng)域,如安全領(lǐng)域、軍事領(lǐng)域、交通領(lǐng)域、醫(yī)療領(lǐng)域和生活領(lǐng)域04目標(biāo)檢測(cè)的應(yīng)用場(chǎng)景現(xiàn)實(shí)中的例子很多,比如:騎手著裝規(guī)范,包括人臉檢測(cè),餐箱檢測(cè),頭盔檢測(cè)等等場(chǎng)景目標(biāo)識(shí)別,包括行人檢測(cè),辦公區(qū)域桌椅檢測(cè),電梯按鈕檢測(cè)與識(shí)別等等合規(guī)檢測(cè),包括二維碼檢測(cè),水印檢測(cè),logo識(shí)別等等場(chǎng)景文本識(shí)別,包括菜單識(shí)別,招牌識(shí)別,指示牌識(shí)別等等04目標(biāo)檢測(cè)的應(yīng)用場(chǎng)景RockX目標(biāo)檢測(cè)算法的簡(jiǎn)介204知識(shí)儲(chǔ)備目標(biāo)檢測(cè)含義和應(yīng)用場(chǎng)景1RockX目標(biāo)檢測(cè)算法的簡(jiǎn)介04RockX目標(biāo)檢測(cè)庫(kù)是集成在核心開發(fā)板上的一套python的接口庫(kù),可以直接調(diào)用,其檢測(cè)性能為:RockX目標(biāo)檢測(cè)算法的簡(jiǎn)介04說明:mAP@IOU0.5=0.704表示IOU=0.5時(shí)對(duì)應(yīng)的mAP=0.704。MSCOCO_VAL2017是目標(biāo)檢測(cè)公開數(shù)據(jù)集,使用該數(shù)據(jù)集中的5000張驗(yàn)證集測(cè)試,共91類別。

"person","bicycle","car","motorcycle","airplane","bus","train","truck","boat","trafficlight","firehydrant","stopsign","parkingmeter","bench","bird","cat","dog","horse","sheep","cow","elephant","bear","zebra","giraffe","backpack","umbrella","handbag","tie","suitcase","frisbee","skis","snowboard","sportsball","kite","baseballbat","baseballglove","skateboard","surfboard","tennisracket","bottle","wineglass","cup","fork","knife","spoon","bowl","banana","apple","sandwich","orange","broccoli","carrot","hotdog","pizza","donut","cake","chair","couch","pottedplant","bed","diningtable","toilet","tv","laptop","mouse","remote","keyboard","cellphone","microwave","oven","toaster","sink","refrigerator","book","clock","vase","scissors","teddybear","hairdrier","toothbrush"RockX目標(biāo)檢測(cè)算法的簡(jiǎn)介04目標(biāo)檢測(cè)是在圖片中對(duì)可變數(shù)量的目標(biāo)進(jìn)行分類和查找。

主要難點(diǎn):目標(biāo)種類與數(shù)量問題目標(biāo)尺度問題外在環(huán)境干擾問題形態(tài)、視角等變化RockX目標(biāo)檢測(cè)算法的簡(jiǎn)介04算法基本流程上面圖表示兩種方法,有候選框特征提取的方法,和特征提取直接回歸的方法。兩種方法目前用得比較多的都是深度學(xué)習(xí)的方法,但是這個(gè)框架同樣也適用于傳統(tǒng)方法RockX目標(biāo)檢測(cè)算法的簡(jiǎn)介04傳統(tǒng)目標(biāo)檢測(cè)方法VS深度學(xué)習(xí)目標(biāo)檢測(cè)方法職業(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

目標(biāo)檢測(cè)算法接口的應(yīng)用05任務(wù)實(shí)施多線程方式實(shí)現(xiàn)視頻流的目標(biāo)檢測(cè)2目標(biāo)檢測(cè)算法接口的定義和使用1目標(biāo)檢測(cè)算法接口的定義和使用05下面通過目標(biāo)檢測(cè)實(shí)驗(yàn),利用OpenCV采集圖片,識(shí)別圖片中的目標(biāo)物體,來詮釋RockX目標(biāo)檢測(cè)算法接口的定義和使用42加載圖片數(shù)據(jù)1導(dǎo)入相關(guān)的庫(kù)3實(shí)例化算法接口調(diào)用目標(biāo)檢測(cè)函數(shù)5畫出物品目標(biāo)框,并繪制目標(biāo)物品的名稱目標(biāo)檢測(cè)算法接口的定義和使用05目標(biāo)檢測(cè)算法接口的定義和使用6將經(jīng)過算法處理的圖像顯示目標(biāo)檢測(cè)算法接口的定義和使用05importtime#時(shí)間庫(kù)importcv2#引入OpenCV圖像處理庫(kù)fromrockximportRockX#引入車牌識(shí)別算法接口庫(kù)fromlib.ft2importft#中文描繪庫(kù)1導(dǎo)入相關(guān)的庫(kù)目標(biāo)檢測(cè)算法接口的定義和使用05第一種方式:OpenCV讀取一張圖片,這里提供的圖片名稱為obj.jpgcv2.imread("圖片名稱")2加載圖片數(shù)據(jù)(1)讀取一張圖片圖片使用OpenCV利用攝像頭采集一張圖片,或者使用OpenCV讀取現(xiàn)有的圖片目標(biāo)檢測(cè)算法接口的定義和使用05第二種方式:OpenCV打開攝像頭采集一張圖片,在之前的章節(jié)有介紹,例如以下案例:cap=cv2.VideoCapture(0)time.sleep(2)cap.set(cv2.CAP_PROP_FRAME_WIDTH,640)cap.set(cv2.CAP_PROP_FRAME_HEIGHT,480)dWindow('image_win',flags=cv2.WINDOW_NORMAL|cv2.WINDOW_KEEPRATIO)ret,frame=cap.read()cv2.imshow('image_win',frame)cv2.waitKey(200)cv2.imwrite("圖片名稱",frame)cap.release()cv2.destroyAllWindows()2加載圖片數(shù)據(jù)目標(biāo)檢測(cè)算法接口的定義和使用05image_obj=cv2.imread("./images/obj.jpg")2加載圖片數(shù)據(jù)利用OpenCV的imread()函數(shù),進(jìn)行讀取一張圖片目標(biāo)檢測(cè)算法接口的定義和使用05importipywidgetsaswidgets#jupyter畫圖庫(kù)

fromIPython.displayimportdisplay#jupyter顯示庫(kù)imgbox=widgets.Image()#定義一個(gè)圖像盒子,用于裝載圖像數(shù)據(jù)imgbox.value=cv2.imencode('.jpg',image_obj)[1].tobytes()#把圖像值轉(zhuǎn)成byte類型的值display(imgbox)#將盒子顯示出來2加載圖片數(shù)據(jù)(2)顯示讀取的圖片利用以下函數(shù)顯示讀取的圖片目標(biāo)檢測(cè)算法接口的定義和使用05in_img_h,in_img_w,ch=image_obj.shapeprint(in_img_w,in_img_h,ch)2加載圖片數(shù)據(jù)獲取圖片的寬in_img_w,高in_img_h和通道數(shù)ch(3)獲取圖片信息目標(biāo)檢測(cè)算法接口的定義和使用05在RockX庫(kù)中,包含了算法各種功能模式,實(shí)例化算法為:

object_det_handle=RockX(功能類型)功能類型,這里采用目標(biāo)檢測(cè)功能類型RockX.ROCKX_MODULE_OBJECT_DETECTION是目標(biāo)檢測(cè)功能類型3實(shí)例化算法接口object_det_handle=RockX(RockX.ROCKX_MODULE_OBJECT_DETECTION)目標(biāo)檢測(cè)算法接口的定義和使用05為了獲取目標(biāo)的位置,調(diào)用目標(biāo)檢測(cè)函數(shù),通過對(duì)圖像的檢測(cè),識(shí)別物體目標(biāo)的位置信息rockx_face_detect(self,in_img,width,height,pixel_fmt)4調(diào)用目標(biāo)檢測(cè)函數(shù)參數(shù)說明:in_img:輸入圖片(numpyndarray)width:圖片寬height:圖片高pixel_fmt:圖片pixelformat返回值說明:ret:狀態(tài)碼,0為成功,其他失敗results:RockX對(duì)象的列表,就是說一張圖可能包含多個(gè)目標(biāo)對(duì)象,每個(gè)對(duì)象包含了物體目標(biāo)的位置框信息等返回值說明:ret:狀態(tài)碼,0為成功,其他失敗results:RockX對(duì)象的列表,就是說一張圖可能包含多個(gè)目標(biāo)對(duì)象,每個(gè)對(duì)象包含了物體目標(biāo)的位置框信息等ret,results=object_det_handle.rockx_face_detect(image_obj,in_img_w,in_img_h,RockX.ROCKX_PIXEL_FORMAT_BGR888)目標(biāo)檢測(cè)算法接口的定義和使用05cv2.rectangle()的作用是根據(jù)坐標(biāo),描繪一個(gè)簡(jiǎn)單的矩形邊框參數(shù)依次為:圖片image,左上角位置坐標(biāo)pt1,右下角位置坐標(biāo)pt2,線條顏色color,線條粗細(xì)thicknesscv2.rectangle(image,pt1=(int(left),int(top)),pt2=(int(right),int(bot)),color=(0,255,0),thickness=3)5畫出物品目標(biāo)框,并繪制目標(biāo)物品的名稱(1)利用OpenCV在圖像上添加文字和畫出人臉框(2)引入中文繪畫庫(kù),用于在圖片上描繪中文字符fromlib.ft2importftimg=ft.draw_text(img,position,'{}'.format(obj_label),34,(255,0,0))ft.draw_text的作用是在圖片的某個(gè)位置上添加文字信息,參數(shù)依次為:圖片img,位置position,文字obj_label,字體大小font,字體顏色color目標(biāo)檢測(cè)算法接口的定義和使用05獲取目標(biāo)名稱,是通過檢測(cè)出的目標(biāo)的ID值,在相對(duì)應(yīng)的目標(biāo)名稱列表中尋找該值RockX.ROCKX_OBJECT_DETECTION_LABELS_91[result[0].cls_idx]5畫出物品目標(biāo)框,并繪制目標(biāo)物品的名稱(3)獲取目標(biāo)名稱ROCKX_OBJECT_DETECTION_LABELS_91是91類物品的名稱的集合列表result[0].cls_idx是識(shí)別后的結(jié)果,物品的ID值,ID和物品的類別名稱在91類物品中是一一對(duì)應(yīng)的這里繪畫結(jié)果,都只采用獲取到的第一個(gè)目標(biāo)來說明,也就是results[0],如果有需要多個(gè),數(shù)值可用變量代替目標(biāo)檢測(cè)算法接口的定義和使用05左上角的坐標(biāo)為:(results[0].box.left,results[0].box.top)右下角的坐標(biāo)為:(results[0].box.right,results[0].box.bottom)5畫出物品目標(biāo)框,并繪制目標(biāo)物品的名稱(4)獲取目標(biāo)的位置信息ifret==0:forresultinresults:obj_label=RockX.ROCKX_OBJECT_DETECTION_LABELS_91[result.cls_idx]cv2.rectangle(image_obj,(result.box.left,result.box.top),(result.box.right,result.box.bottom),(0,255,0),2)if(result.box.top-50)>0:image_obj=ft.draw_text(image_obj,(result.box.left,result.box.top-50),'{}'.format(obj_label),34,(0,0,255))else:image_obj=ft.draw_text(image_obj,(result.box.left,result.box.bottom),'{}'.format(obj_label),34,(0,0,255))else:print('識(shí)別失敗')目標(biāo)檢測(cè)算法接口的定義和使用05importipywidgetsaswidgets#jupyter畫圖庫(kù)fromIPython.displayimportdisplay#jupyter顯示庫(kù)imgbox=widgets.Image()#定義一個(gè)圖像盒子,用于裝載圖像數(shù)據(jù)imgbox.value=cv2.imencode('.jpg',image_obj)[1].tobytes()#把圖像值轉(zhuǎn)成byte類型的值display(imgbox)#將盒子顯示出來6將經(jīng)過算法處理的圖像顯示利用jupyter的畫圖庫(kù)和顯示庫(kù),來顯示獲取的圖片05任務(wù)實(shí)施多線程方式實(shí)現(xiàn)視頻流的目標(biāo)檢測(cè)2目標(biāo)檢測(cè)算法接口的定義和使用142定義攝像頭采集線程1引入相關(guān)的庫(kù)3定義算法識(shí)別線程調(diào)用兩個(gè)線程,啟動(dòng)視頻流的目標(biāo)檢測(cè)5停止線程多線程方式實(shí)現(xiàn)視頻流的目標(biāo)檢測(cè)05多線程方式實(shí)現(xiàn)視頻流的目標(biāo)檢測(cè)利用多線程,使圖像采集和算法識(shí)別同時(shí)運(yùn)行,從而實(shí)現(xiàn)視頻流的車牌識(shí)別,并且可以避免一些因花時(shí)間太久,導(dǎo)致的視頻卡頓多線程實(shí)現(xiàn)的目標(biāo)檢測(cè)是針對(duì)多個(gè)物品的識(shí)別和實(shí)時(shí)畫面的捕獲。多線程方式實(shí)現(xiàn)視頻流的目標(biāo)檢測(cè)05使用線程可以把占據(jù)長(zhǎng)時(shí)間的程序中的任務(wù)放到后臺(tái)去處理。用戶界面可以更加吸引人,比如用戶點(diǎn)擊了一個(gè)按鈕去觸發(fā)某些事件的處理,可以彈出一個(gè)進(jìn)度條來顯示處理的進(jìn)度。程序的運(yùn)行速度可能加快。在一些等待的任務(wù)實(shí)現(xiàn)上如用戶輸入、文件讀寫和網(wǎng)絡(luò)收發(fā)數(shù)據(jù)等,線程就比較有用了。在這種情況下我們可以釋放一些珍貴的資源如內(nèi)存占用等等。1引入相關(guān)的庫(kù)多線程類似于同時(shí)執(zhí)行多個(gè)不同程序,多線程運(yùn)行有如下優(yōu)點(diǎn):多線程方式實(shí)現(xiàn)視頻流的目標(biāo)檢測(cè)051引入相關(guān)的庫(kù)importtime#時(shí)間庫(kù)importcv2#引入OpenCV圖像處理庫(kù)fromlib.ft2importft#中文描繪庫(kù)importthreading#這是python的標(biāo)準(zhǔn)庫(kù),線程庫(kù)importipywidgetsaswidgets#jupyter畫圖庫(kù)fromIPython.displayimportdisplay#jupyter顯示庫(kù)fromrockximportRockX#引入算法庫(kù)每個(gè)獨(dú)立的線程有一個(gè)程序運(yùn)行的入口、順序執(zhí)行序列和程序的出口。但是線程不能夠獨(dú)立執(zhí)行,必須依存在應(yīng)用程序中,由應(yīng)用程序提供多個(gè)線程執(zhí)行控制。多線程方式實(shí)現(xiàn)視頻流的目標(biāo)檢測(cè)052定義攝像頭采集線程結(jié)合上面的opencv采集圖像的內(nèi)容,利用多線程的方式串起來,形成一個(gè)可傳參,可調(diào)用的通用類。這里定義了一個(gè)全局變量camera_img,用作存儲(chǔ)獲取的圖片數(shù)據(jù),以便于其他線程可以調(diào)用init初始化函數(shù):實(shí)例化該線程的時(shí)候,會(huì)自動(dòng)執(zhí)行初始化函數(shù),在初始化函數(shù)里面,打開攝像頭,并設(shè)置分辨run函數(shù):該函數(shù)是在實(shí)例化后,執(zhí)行start啟動(dòng)函數(shù)的時(shí)候,會(huì)自動(dòng)執(zhí)行。在該函數(shù)里,實(shí)現(xiàn)了循環(huán)獲取圖像的內(nèi)容請(qǐng)說說執(zhí)行線程的幾種方式?多線程方式實(shí)現(xiàn)視頻流的目標(biāo)檢測(cè)052定義攝像頭采集線程classCameraThread(threading.Thread):def__init__(self,camera_id,camera_width,camera_height):threading.Thread.__init__(self)self.working=Trueself.cap=cv2.VideoCapture(camera_id)#打開攝像頭

self.cap.set(cv2.CAP_PROP_FRAME_WIDTH,camera_width)#設(shè)置攝像頭分辨率寬度

self.cap.set(cv2.CAP_PROP_FRAME_HEIGHT,camera_height)#設(shè)置攝像頭分辨率高度

defrun(self):globalcamera_img#定義一個(gè)全局變量,用于存儲(chǔ)獲取的圖片,以便于算法可以直接調(diào)用

whileself.working:try:ret,image=self.cap.read()#獲取新的一幀圖片,ret為獲取的狀態(tài)值

ifnotret:time.sleep(0.1)continuecamera_img=imageexceptExceptionase:passdefstop(self):self.working=Falseself.cap.release()多線程方式實(shí)現(xiàn)視頻流的目標(biāo)檢測(cè)053定義算法識(shí)別線程結(jié)合調(diào)用算法接口的內(nèi)容和圖像顯示內(nèi)容,利用多線程的方式整合起來,循環(huán)識(shí)別,對(duì)攝像頭采集線程中獲取的每一幀圖片進(jìn)行識(shí)別,并顯示,形成視頻流的畫面。多線程方式實(shí)現(xiàn)視頻流的目標(biāo)檢測(cè)054調(diào)用兩個(gè)線程,啟動(dòng)視頻流的目標(biāo)檢測(cè)camera_th=CameraThread(0,640,480)obj_detect_th=ObjDetectThread()camera_th.start()obj

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論