首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何将暗网YOLOv4视频的输出保存在每个帧的txt文件中?

如何将暗网YOLOv4视频的输出保存在每个帧的txt文件中?
EN

Stack Overflow用户
提问于 2020-09-22 13:50:49
回答 2查看 8.3K关注 0票数 1

我正在使用暗网来检测自定义数据集上的YOLOv4对象。对于视频中的这一检测,我使用:

./darknet detector demo data/obj.data yolo-obj.cfg yolo-obj_best.weights -ext_output video.mp4 -out-filename video_results.mp4

这给了我的视频与边界盒打印的每一个检测。但是,我希望创建一个.txt (或.csv)文件,其中包含预测的每个帧号。

我确实找到了这个答案,但是这给出了json文件中的输出,我需要一个.txt或.csv文件。我对C不太熟悉,所以我发现很难将这个答案修改成我需要的格式。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-07-14 12:39:54

我按照Rafael的建议编写了一些代码,以便从JSON迁移到cvs。我把它放在这里以防有人想用它。这适用于分析视频的情况,因此每个“图像”都是视频中的一个帧。

代码语言:javascript
运行
复制
import json
import csv

# with and height of the video
WIDTH = 1920
HEIGHT = 1080


with open('~/detection_results.json', encoding='latin-1') as json_file:
    data = json.load(json_file)
    
# open csv file
csv_file_to_make = open('~/detection_results.csv', 'w', newline='\n')

csv_file = csv.writer(csv_file_to_make)

# write the header 
# NB x and y values are relative
csv_file.writerow(['Frame ID',
                   'class',
                   'x_center',
                   'y_center',
                   'bb_width',
                   'bb_heigth',
                   'confidence'])


for frame in data:
    frame_id = frame['frame_id']
    instrument = ""
    center_x = ""
    center_y = ""
    bb_width = ""
    bb_height = ""
    confidence = ""

    if frame['objects'] == []:
        csv_file.writerow([frame_id,
                              class,
                              center_x,
                              center_y,
                              bb_width,
                              bb_height,
                              confidence
                               ])
    else:
        for single_detection in frame['objects']:
            instrument = single_detection['name']
            center_x = WIDTH*single_detection['relative_coordinates']['center_x']
            center_y = HEIGHT*single_detection['relative_coordinates']['center_y']
            bb_width = WIDTH*single_detection['relative_coordinates']['width']
            bb_height = HEIGHT*single_detection['relative_coordinates']['height']
            confidence = single_detection['confidence']
        
            csv_file.writerow([frame_id,
                              class,
                              center_x,
                              center_y,
                              bb_width,
                              bb_height,
                              confidence
                               ])
    
csv_file_to_make.close()

希望这能有所帮助!如果您看到了优化此代码的解决方案,当然这也是受欢迎的:)

票数 0
EN

Stack Overflow用户

发布于 2021-03-23 19:34:46

已经有关于如何使用命令行的说明,特别是以.txt格式保存结果的链接:

https://github.com/AlexeyAB/darknet#how-to-use-on-the-command-line

为了节省时间,我将提供一个可能有用的要点:

  • 若要处理图像列表--数据/tra.txt,并将检测结果保存到result.txt,请使用以下命令:
  • darknet.exe探测器测试cfg/coco.data cfg/yolov4.cfg yolov4.权重-dont_show -ext_output result.txt

可能会迟到但可能对其他人有帮助。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64011222

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档