yolo的边界框

时间:2018-03-06 02:07:40

标签: opencv bounding-box yolo

我正在使用YOLO开展机器学习项目。我按照找到的指南here创建了我自己的数据集(在如何训练(检测自定义对象)部分)。对于边界框,我需要知道我想在给定图片中训练YOLO的每个对象的[x] [y] [width] [height]。到目前为止,我一直在手工找到这个,但它变得非常耗时。我希望得到一些帮助,编写一个可以为我计算的脚本。我知道opencv有一些很棒的图像处理工具,但不知道从哪里开始寻找对象坐标。

3 个答案:

答案 0 :(得分:0)

在您提到的页面中,有一个部分包含指向执行这些框的工具的链接:

  

如何标记有界的对象框并创建注释文件:

     

在这里,您可以找到带有GUI软件的存储库,用于标记有界的对象框并为Yolo v2生成注释文件:https://github.com/AlexeyAB/Yolo_mark

答案 1 :(得分:0)

我也遇到同样的问题,但在我的情况下,数据是视频,背景是相同的,所以我做了背景扣除 您可以通过调整一些阈值来尝试使用此代码,也许您可​​以得到想要的

import cv2
import numpy as np 

# read and scale down image
# wget https://bigsnarf.files.wordpress.com/2017/05/hammer.png
img = cv2.pyrDown(cv2.imread('hammer.png', cv2.IMREAD_UNCHANGED))

# threshold image
ret, threshed_img = cv2.threshold(cv2.cvtColor(img, cv2.COLOR_BGR2GRAY),
                127, 255, cv2.THRESH_BINARY)
# find contours and get the external one
image, contours, hier = cv2.findContours(threshed_img, cv2.RETR_TREE,
                cv2.CHAIN_APPROX_SIMPLE)

# with each contour, draw boundingRect in green
# a minAreaRect in red and
# a minEnclosingCircle in blue
for c in contours:
    # get the bounding rect
    x, y, w, h = cv2.boundingRect(c)
    # draw a green rectangle to visualize the bounding rect
    cv2.rectangle(img, (x, y), (x+w, y+h), (0, 255, 0), 2)

    # get the min area rect
    rect = cv2.minAreaRect(c)
    box = cv2.boxPoints(rect)
    # convert all coordinates floating point values to int
    box = np.int0(box)
    # draw a red 'nghien' rectangle
    cv2.drawContours(img, [box], 0, (0, 0, 255))

    # finally, get the min enclosing circle
    (x, y), radius = cv2.minEnclosingCircle(c)
    # convert all values to int
    center = (int(x), int(y))
    radius = int(radius)
    # and draw the circle in blue
    img = cv2.circle(img, center, radius, (255, 0, 0), 2)

print(len(contours))
cv2.drawContours(img, contours, -1, (255, 255, 0), 1)

cv2.imshow("contours", img)

ESC = 27
while True:
    keycode = cv2.waitKey()
    if keycode != -1:
        keycode &= 0xFF
        if keycode == ESC:
            break
cv2.destroyAllWindows()

答案 2 :(得分:0)

这里有Yolo-mark-pwa源代码的一部分,如您所见,它比原始的Yolo_mark更具可读性(单击右上角的github图标,然后选中src/utils/createExportCord.ts,{{1} })。 src/utils/readExportCord.tsnaturalWidth是图像尺寸,naturalWidthheight是蓝色矩形尺寸。

width

enter image description here