對(duì)YOLOv3模型調(diào)用時(shí)候的python接口詳解
需要注意的是:更改完源程序.c文件,需要對(duì)整個(gè)項(xiàng)目重新編譯、make install,對(duì)已經(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ò);之前以為是文件路徑的問(wèn)題,稀里糊涂的;由于很久不寫c文件了,所以最后直接在python接口后在py文件中修改的畫框、標(biāo)置信度等操作,一次次的嘗試后終于成功
(1)將項(xiàng)目中python文件下的darknet.py文件拷貝到根目錄,和/libdarknet.so在同一個(gè)目錄下
(2)整個(gè)demo程序都是用絕對(duì)路徑;
實(shí)現(xiàn)yolov3模型加載,批量讀取文件夾下的照片到庫(kù)函數(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('共檢測(cè)出目標(biāo)個(gè)數(shù): ' + str(num))
print('共檢測(cè)照片個(gè)數(shù):'+ str(i))
放其中一個(gè)照片測(cè)試照片:

以上這篇對(duì)YOLOv3模型調(diào)用時(shí)候的python接口詳解就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
- Python如何將LabelMe生成的JSON格式轉(zhuǎn)換成YOLOv8支持的TXT格式
- Python+Yolov5人臉口罩識(shí)別的詳細(xì)步驟
- python目標(biāo)檢測(cè)YoloV4當(dāng)中的Mosaic數(shù)據(jù)增強(qiáng)方法
- Python3.7 + Yolo3實(shí)現(xiàn)識(shí)別語(yǔ)音播報(bào)功能
- Python Flask搭建yolov3目標(biāo)檢測(cè)系統(tǒng)詳解流程
- opencv-python+yolov3實(shí)現(xiàn)目標(biāo)檢測(cè)
- Python+樹(shù)莓派+YOLO打造一款人工智能照相機(jī)
- 使用python和yolo方法實(shí)現(xiàn)yolo標(biāo)簽自動(dòng)標(biāo)注
相關(guān)文章
python基礎(chǔ)教程之popen函數(shù)操作其它程序的輸入和輸出示例
popen函數(shù)允許一個(gè)程序?qū)⒘硪粋€(gè)程序作為新進(jìn)程啟動(dòng),并可以傳遞數(shù)據(jù)給它或者通過(guò)它接收數(shù)據(jù),下面使用示例學(xué)習(xí)一下他的使用方法2014-02-02
Python實(shí)現(xiàn)生成日?qǐng)?bào)的示例代碼
這篇文章主要為大家詳細(xì)介紹了如何利用Python實(shí)現(xiàn)生成日?qǐng)?bào)的功能,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2023-06-06
PyQt彈出式對(duì)話框的常用方法及標(biāo)準(zhǔn)按鈕類型
這篇文章主要為大家詳細(xì)介紹了PyQt彈出式對(duì)話框的常用方法及標(biāo)準(zhǔn)按鈕類型,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-02-02
在django中使用自定義標(biāo)簽實(shí)現(xiàn)分頁(yè)功能
這篇文章主要介紹了在django中使用自定義標(biāo)簽實(shí)現(xiàn)分頁(yè)功能,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-07-07
python中CURL 和python requests的相互轉(zhuǎn)換實(shí)現(xiàn)
本文主要介紹了python中CURL 和python requests的相互轉(zhuǎn)換實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-03-03
python實(shí)現(xiàn)對(duì)指定輸入的字符串逆序輸出的6種方法
這篇文章主要介紹了python實(shí)現(xiàn)對(duì)指定輸入的字符串逆序輸出的6種方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-04-04
使用Python打造高效多進(jìn)程TCP服務(wù)器
這篇文章主要為大家詳細(xì)介紹了如何使用Python實(shí)現(xiàn)多進(jìn)程的TCP服務(wù)器,通過(guò)為每個(gè)連接進(jìn)來(lái)的客戶端分配一個(gè)進(jìn)程,實(shí)現(xiàn)并發(fā)處理多個(gè)客戶端請(qǐng)求的能力,感興趣的可以了解下2024-01-01

