對YOLOv3模型調(diào)用時(shí)候的python接口詳解
需要注意的是:更改完源程序.c文件,需要對整個(gè)項(xiàng)目重新編譯、make install,對已經(jīng)生成的文件進(jìn)行更新,類似于之前VS中在一個(gè)類中增加新函數(shù)重新編譯封裝dll,而python接口的調(diào)用主要使用的是libdarknet.so文件,其余在配置文件中的修改不必重新進(jìn)行編譯安裝。
之前訓(xùn)練好的模型,在模型調(diào)用的時(shí)候,總是在
lib = CDLL("/home/*****/*******/darknet/libdarknet.so", RTLD_GLOBAL)這里讀不到darknet編譯生成的.so文件,導(dǎo)致直接的報(bào)錯(cuò);之前以為是文件路徑的問題,稀里糊涂的;由于很久不寫c文件了,所以最后直接在python接口后在py文件中修改的畫框、標(biāo)置信度等操作,一次次的嘗試后終于成功
(1)將項(xiàng)目中python文件下的darknet.py文件拷貝到根目錄,和/libdarknet.so在同一個(gè)目錄下
(2)整個(gè)demo程序都是用絕對路徑;
實(shí)現(xiàn)yolov3模型加載,批量讀取文件夾下的照片到庫函數(shù)變量,最終處理結(jié)果存入在另外新建文件夾
###2019.04.03 by ylxb def showPicResult(image,peoplecar,outimage): img = cv2.imread(image) out_img =outimage cv2.imwrite(out_img, img) for i in range(len(peoplecar)): x1=peoplecar[i][2][0]-peoplecar[i][2][2]/2 y1=peoplecar[i][2][1]-peoplecar[i][2][3]/2 x2=peoplecar[i][2][0]+peoplecar[i][2][2]/2 y2=peoplecar[i][2][1]+peoplecar[i][2][3]/2 im = cv2.imread(out_img) cv2.rectangle(im,(int(x1),int(y1)),(int(x2),int(y2)),(255,255,0),3) text = listpeoplecar[i][0] # 在圖片上添加文字信息 if(text=="people"): carcol=(55, 55, 255)#顏色顯示 else: carcol = (255, 55, 55) cv2.putText(im, text, (int(x1), int(y1)), cv2.FONT_HERSHEY_SIMPLEX, 0.8, carcol, 1, cv2.LINE_AA) #This is a method that works well. cv2.imwrite(out_img, im)
###2019.04.03 by ylxb filenames = os.listdir(picDir) i = 0 num = 0#目標(biāo)個(gè)數(shù) car_num = 0#car個(gè)數(shù) people_num = 0#people個(gè)數(shù) car = "car" # car元素 people = "people" # people元素 for name in filenames: filename=os.path.join(picDir,name) #print(filename) listpeoplecar = detect(net, meta, filename) print(listpeoplecar) i = i + 1 #save_picpath = out_img+str(filename).split("/")[-1].split(".")[0] + ".png" out_img=out_img1+str(i)+'.png' showPicResult(filename,listpeoplecar,out_img) for item in listpeoplecar: #print(item) car_num = car_num + item[0].count(car)#car個(gè)數(shù) people_num = people_num + item[0].count(people)#people個(gè)數(shù) num = num + 1#目標(biāo)個(gè)數(shù) print('car個(gè)數(shù): ' + str(car_num)) print('people個(gè)數(shù): ' + str(people_num)) print('共檢測出目標(biāo)個(gè)數(shù): ' + str(num)) print('共檢測照片個(gè)數(shù):'+ str(i))
放其中一個(gè)照片測試照片:
以上這篇對YOLOv3模型調(diào)用時(shí)候的python接口詳解就是小編分享給大家的全部內(nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
- Python如何將LabelMe生成的JSON格式轉(zhuǎn)換成YOLOv8支持的TXT格式
- Python+Yolov5人臉口罩識別的詳細(xì)步驟
- python目標(biāo)檢測YoloV4當(dāng)中的Mosaic數(shù)據(jù)增強(qiáng)方法
- Python3.7 + Yolo3實(shí)現(xiàn)識別語音播報(bào)功能
- Python Flask搭建yolov3目標(biāo)檢測系統(tǒng)詳解流程
- opencv-python+yolov3實(shí)現(xiàn)目標(biāo)檢測
- Python+樹莓派+YOLO打造一款人工智能照相機(jī)
- 使用python和yolo方法實(shí)現(xiàn)yolo標(biāo)簽自動標(biāo)注
相關(guān)文章
Python實(shí)現(xiàn)的異步代理爬蟲及代理池
本文主要介紹了Python實(shí)現(xiàn)異步代理爬蟲及代理池的相關(guān)知識,具有很好的參考價(jià)值,下面跟著小編一起來看下吧2017-03-03python實(shí)現(xiàn)nao機(jī)器人手臂動作控制
這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)nao機(jī)器人手臂動作控制,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-04-04matplotlib圖形整合之多個(gè)子圖繪制的實(shí)例代碼
matplotlib繪制多個(gè)子圖的時(shí)候,我們可以根據(jù)自己的想法去排列子圖的順序,也可以生成不同的子圖數(shù)量,本文就詳細(xì)的介紹了matplotlib 多子圖繪制,具有一定的參考價(jià)值,感興趣的可以了解一下2022-04-04python防止程序超時(shí)的實(shí)現(xiàn)示例
因?yàn)槟硞€(gè)需求,需要在程序運(yùn)行的時(shí)候防止超時(shí),本文主要介紹了python防止程序超時(shí)的實(shí)現(xiàn)示例,具有一定的參考價(jià)值,感興趣的可以了解一下2023-08-08Python Logging 日志記錄入門學(xué)習(xí)
這篇文章主要介紹了Python Logging 日志記錄入門學(xué)習(xí),小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2018-06-06使用Python實(shí)現(xiàn)更改Word文檔的頁面大小
頁面大小確定文檔中每個(gè)頁面的尺寸和布局,有時(shí)我們會需要自定義頁面大小以滿足特定要求,下面我們就來看看如何使用Python實(shí)現(xiàn)這一效果吧2024-03-03