使用YOLO训练后如何裁剪检测到的物体?

Ais*_*hee 2 darknet yolo

我正在使用 YOLO 进行模型训练。我想裁剪检测到的对象。对于 Darknet 存储库,我使用的是:https ://github.com/AlexeyAB/darknet/

对于检测并将输出坐标存储在文本文件中,我使用以下命令:!./darknet detector test data_for_colab/obj.data data_for_colab/yolov3-tiny-obj.cfg yolov3-tiny-obj_10000.weights -dont_show -ext_output < TEST.txt >结果.txt 结果.jpg

Ank*_* De 5

考虑到 TEST.txt 文件中包含示例图像的详细信息。您可以使用python 的re模块进行文本模式检测,即您的“class_name”。

解析 .txt 文件

import re
path='/content/darknet/result.txt'
myfile=open(path,'r')
lines=myfile.readlines()
pattern= "class_name"

for line in lines:
  if re.search(pattern,line):
    Cord_Raw=line
Cord=Cord_Raw.split("(")[1].split(")")[0].split("  ")
Run Code Online (Sandbox Code Playgroud)

现在我们将获得列表中的坐标。

坐标计算

x_min=int(Cord[1])
x_max=x_min + int(Cord[5])
y_min=int(Cord[3])
y_max=y_min+ int(Cord[7])
Run Code Online (Sandbox Code Playgroud)

从实际图像中裁剪

import cv2
img = cv2.imread("Image.jpg")
crop_img = img[y_min:y_max, x_min:x_max]
cv2.imwrite("Object.jpg",crop_img)
Run Code Online (Sandbox Code Playgroud)