YOLOv8中根据标签绘制真实框

这个在写论文的过程中获取展示图片的时侯可能会需要用的。最近也是自己在弄目标检测方面的东西,然后这也是自己碰到的问题,想着能分享一下,希望对有需要的人有所帮助。也欢迎大家来讨论问题、交流心得。

import cv2
import os

# 定义输入文件夹和输出文件夹路径
input_img_folder = "输入图片的路径"
input_txt_folder = "输入图片对应的标签的路径"
output_folder = "输出带标准框的图片的路径"

# 创建输出文件夹
if not os.path.exists(output_folder):
    os.makedirs(output_folder)

# 获取输入文件夹中的所有图片文件名
img_files = os.listdir(input_img_folder)

# 遍历每张图片
for img_file in img_files:
    img_name = os.path.splitext(img_file)[0]

    # 读取图片
    img_path = os.path.join(input_img_folder, img_file)
    img = cv2.imread(img_path)

    # 读取对应的真实框数据
    txt_path = os.path.join(input_txt_folder, img_name + ".txt")
    with open(txt_path, 'r') as f:
        lines = f.readlines()

    # 在图片上绘制真实框
    for line in lines:
        data = line.strip().split()
        category = int(data[0])
        x, y, w, h = map(float, data[1:])

        # 计算真实框的坐标
        left = int((x - w / 2) * img.shape[1])
        top = int((y - h / 2) * img.shape[0])
        right = int((x + w / 2) * img.shape[1])
        bottom = int((y + h / 2) * img.shape[0])

        # 绘制真实框
        thickness = 3
        cv2.rectangle(img, (left, top), (right, bottom), (0, 255, 0), 2)

    # 保存带有真实框的图片到输出文件夹
    output_path = os.path.join(output_folder, img_file)
    cv2.imwrite(output_path, img)

print("Finished processing images.")

  • 4
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
yolov8是一种目标检测算法,它在推理过程需要进行图像后处理来获取检测结果。下面是yolov8图像后处理的一般步骤: 1. 检查图片大小是否符合要求: 在图像后处理之前,通常需要检查输入图片的大小是否符合模型的要求。这可以通过check_imgsz函数来实现。 2. 处理推理源数据: 在进行图像后处理之前,需要先加载推理源数据。这可以通过load_inference_source函数来完成。 3. 解码预测结果: yolov8的预测结果通常是经过编码的边界框和类别信息。在图像后处理,需要对这些编码结果进行解码,以获取真实的边界框位置和类别标签。 4. 进行非极大值抑制: yolov8通常会生成多个候选框,为了去除重叠的候选框,需要进行非极大值抑制(NMS)操作。NMS会根据候选框的置信度和重叠度来选择最终的检测结果。 5. 绘制边界框和标签: 最后一步是将检测结果绘制在原始图像上,通常会使用边界框和类别标签来标记检测到的目标。 下面是一个示例代码,演示了yolov8图像后处理的过程: ```python # 检查图片大小是否符合要求 def check_imgsz(image): # 检查图片大小的逻辑代码 pass # 加载推理源数据 def load_inference_source(image): # 加载推理源数据的逻辑代码 pass # 解码预测结果 def decode_predictions(predictions): # 解码预测结果的逻辑代码 pass # 非极大值抑制 def non_max_suppression(predictions): # 非极大值抑制的逻辑代码 pass # 绘制边界框和标签 def draw_boxes(image, boxes, labels): # 绘制边界框和标签的逻辑代码 pass # 图像后处理 def yolov8_post_processing(image): # 检查图片大小是否符合要求 check_imgsz(image) # 加载推理源数据 inference_data = load_inference_source(image) # 解码预测结果 predictions = decode_predictions(inference_data) # 非极大值抑制 filtered_predictions = non_max_suppression(predictions) # 绘制边界框和标签 result_image = draw_boxes(image, filtered_predictions) return result_image # 调用图像后处理函数 image = load_image("image.jpg") result = yolov8_post_processing(image) ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值