溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

YOLOv3模型調用時python接口的示例分析

發(fā)布時間:2021-08-12 12:00:28 來源:億速云 閱讀:179 作者:小新 欄目:開發(fā)技術

這篇文章主要介紹YOLOv3模型調用時python接口的示例分析,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!

需要注意的是:更改完源程序.c文件,需要對整個項目重新編譯、make install,對已經(jīng)生成的文件進行更新,類似于之前VS中在一個類中增加新函數(shù)重新編譯封裝dll,而python接口的調用主要使用的是libdarknet.so文件,其余在配置文件中的修改不必重新進行編譯安裝。

之前訓練好的模型,在模型調用的時候,總是在

lib = CDLL("/home/*****/*******/darknet/libdarknet.so", RTLD_GLOBAL)這里讀不到darknet編譯生成的.so文件,導致直接的報錯;之前以為是文件路徑的問題,稀里糊涂的;由于很久不寫c文件了,所以最后直接在python接口后在py文件中修改的畫框、標置信度等操作,一次次的嘗試后終于成功

(1)將項目中python文件下的darknet.py文件拷貝到根目錄,和/libdarknet.so在同一個目錄下

(2)整個demo程序都是用絕對路徑;

實現(xiàn)yolov3模型加載,批量讀取文件夾下的照片到庫函數(shù)變量,最終處理結果存入在另外新建文件夾

###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#目標個數(shù)
  car_num = 0#car個數(shù)
  people_num = 0#people個數(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個數(shù)
      people_num = people_num + item[0].count(people)#people個數(shù)
      num = num + 1#目標個數(shù)

  print('car個數(shù): ' + str(car_num))
  print('people個數(shù): ' + str(people_num))
  print('共檢測出目標個數(shù): ' + str(num))
  print('共檢測照片個數(shù):'+ str(i))

放其中一個照片測試照片:

YOLOv3模型調用時python接口的示例分析

以上是“YOLOv3模型調用時python接口的示例分析”這篇文章的所有內容,感謝各位的閱讀!希望分享的內容對大家有幫助,更多相關知識,歡迎關注億速云行業(yè)資訊頻道!

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權內容。

AI