使用Python调用YOLOv3 libdarknet.so的接口

一、基本用法

示例文件为:~darknet/python/darknet.py

  1. 在最后修改配置文件和权重;
  2. 修改libdarknet.so的调用路径(若修改后还是找不到,则修改文件权限);
    • 报错:ctypes.ArgumentError: argument 1: : wrong type
    • 原因:net = load_net(“cfg/tiny-yolo.cfg”, “tiny-yolo.weights”, 0)这个函数最后会将”cfg/tiny-yolo.cfg”, “tiny-yolo.weights”这些参数传给libdarknet.so这个库中,而这个库是用c/c++来写的,所以出现了这个错误。
    • 解决方法:在出错的字符串前面添加一个b即可,即改为:
net = load_net(b"cfg/yolov3.cfg", b"backup/yolov3.weights", 0)
meta = load_meta(b"cfg/voc.data")
r = detect(net, meta, b"img.jpg")

或者

net = load_net("cfg/tiny-yolo.cfg".encode('utf-8'), "tiny-yolo.weights".encode('utf-8'), 0)
meta = load_meta("cfg/coco.data".encode('utf-8'))
r = detect(net, meta, "data/dog.jpg".encode('utf-8'))

二、添加自己的功能

darknet.py返回的结果的坐标是:(b.x, b.y, b.w, b.h)即(中心点x,中心点y,宽,高)

你可能感兴趣的:(使用Python调用YOLOv3 libdarknet.so的接口)