YOLO3训练自己标注的数据 将检测到的目标保存为图像

YOLO3训练自己标注的数据 将检测到的目标保存为图像

    • 使用darknet下的python/darknet.py遇到的问题
    • 检测区域

使用darknet下的python/darknet.py遇到的问题

  1. 找不到libdarknet.so文件
    将so文件放在darknet.py文件同目录下,或在lib=CDLL()中写so的全路径名
  2. load_net参数不正确
    darknet使用C/C++编写,在调用load_net,输入字符参数时,要在前面加b以表示类型,如b’cfg/yolov3-voc.cfg’
  3. 找不到配置文件
    我在pycharm中执行,找不到相关文件,是因为工作目录不在darknet文件夹下,在pycharm中修改Working directory为darknet所在目录

检测区域

  1. 检测函数

    net = load_net(b'cfg', b'weights', 0)
    meta = load_meta(b'data')
    r = dectect(net, meta, b'test.png')
    

    r [(b’text’, 0.8, (600, 700, 170, 25))]
    r[0][0] b’text’ 类别名
    r[0][1] 0.8 类别可能性
    r[0][2][0] 600 b.x 中心点x坐标
    r[0][2][0] 700 b.y 中心点y坐标
    r[0][2][0] 170 b.w 目标区域 宽度
    r[0][2][3] 25 b.h 目标区域 高度

  2. 使用open cv保存检测区域

    def save_region(im_path, x, y, width, height):
    	image = cv2.imread(im_path)
    	cropped = imge[int(y - height / 2) : int(y + height /2), int(x - width / 2):int(x + width /2)]
    	cv2.imwrite('save.jpg', cropped)
    

    opencv 保存图像是用[y:y+height, x:x+width]来处理的
    读取图像,截取[高度,宽度]

  3. 使用PIL库保存图像

    def save_pil(im_path, x, y, width, heigth):
    	image = Image.open(file)
    	# cropped = image.crop[x0, y0, x1, y1]
    	cropped = image.crop((int(x - width / 2), int(y - height / 2), int(x + width /2),  int(y + height /2)))
    

    Image图像以左上角为(0,0)点

  4. opencv保存的图像比pillow保存图像体积大一些

你可能感兴趣的:(python,YOLO3,物体检测,目标检测,yolo)