【python脚本】python实现:目标检测裁剪图片样本,根据类标签文件进行裁剪保存

这篇具有很好参考价值的文章主要介绍了【python脚本】python实现:目标检测裁剪图片样本,根据类标签文件进行裁剪保存。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

python实现:目标检测裁剪图片样本,根据类标签文件进行裁剪保存

我在进行目标检测时候,比如红绿灯检测,目标区域很小,样本杂乱。

想要筛选错误样本的话,很困难。可以把目标区域裁剪出来。人大脑处理对于这样的异己比较敏感。样本量较少的话可以自己筛一筛。样本量较大的话,可以训练一个分类模型帮你筛一下。

它就可以实现一个目标检测的数据集可以转化为一个分类的数据集。

这个是根据txt标签文件进行筛选的,大同小异,别的文件类型也就是登录读取信息不一样。

它最终会读取你目标检测的每一个类,然后每个类会创建一个就叫这个类名的文件夹,然后裁剪出来的这一类的图片。最后图片的文件名就是你的”原文件名+num“。

#根据预测出来的txt文件裁剪图片
import os
import cv2
from tqdm import tqdm

image_input = '/home/xys/CloundShiProjects/traffic_light/trafficlight_dect/data/JPEGImages/'
txt_input = '/home/xys/CloundShiProjects/traffic_light/trafficlight_dect/data/labels/'
path_output = "/home/xys/CloundShiProjects/traffic_light/trafficlight_dect/crop/"    # 裁剪出来的小图保存的根目录
class_names_path = '/home/xys/CloundShiProjects/traffic_light/trafficlight_dect/data/classes.txt'

img_total = []
txt_total = []

def read_class_name(path):        #读取path下的类别民
    f = open(path,'r')
    classes_name = []
    for i in f.readlines():
        classes_name.append(i.strip())
    return classes_name
classes_name = read_class_name(class_names_path)

file_image = os.listdir(image_input)
for filename in file_image:#在做jpg文件名列表
     first,last = os.path.splitext(filename)
     img_total.append(first)

file_txt = os.listdir(txt_input)
for filename in file_txt:#在做txt文件名列表
     first,last = os.path.splitext(filename)
     txt_total.append(first)

for img_ in tqdm(img_total):
    if img_ in txt_total:
        filename_img = img_+".jpg"
        path1 = os.path.join(image_input,filename_img)
        img = cv2.imread(path1)
        filename_txt = img_+'.txt'     #预测出来的txt文件没有后缀名,有则加 {+".txt"}
        h = img.shape[0]
        w = img.shape[1]
        n = 1
        with open(os.path.join(txt_input,filename_txt),"r+",encoding="utf-8",errors="ignore") as f:
            for line in f:
                aa = line.split(" ")
                # if not int(aa[0]) == 0: continue     #判断需要裁剪的类别:0--vehicle
                x_center = w * float(aa[1])       # aa[1]左上点的x坐标
                y_center = h * float(aa[2])       # aa[2]左上点的y坐标
                width = int(w*float(aa[3]))       # aa[3]图片width
                height = int(h*float(aa[4]))      # aa[4]图片height
                lefttopx = int(x_center-width/2.0)
                lefttopy = int(y_center-height/2.0)
                roi = img[lefttopy+1:lefttopy+height+3,lefttopx+1:lefttopx+width+1] # [左上y:右下y,左上x:右下x]
                                                                          # (y1:y2,x1:x2)需要调参,否则裁剪出来的小图可能不太好
                if roi.size == 0: continue
                filename_last = img_+"_"+str(n)+".jpg"      # 裁剪出来的小图文件名
                x = int(aa[0])
                path2 = os.path.join(path_output,classes_name[x])           # 需要在path_output路径下创建一个cut_txt文件夹
                if not os.path.exists(path2):
                    os.mkdir(path2)
                # print('path2:', path2)                    # 裁剪小图的保存位置
                cv2.imwrite(os.path.join(path2,filename_last),roi)
                n = n+1
    else:
        continue

声明:
转载自:知乎
在此仅做记录使用。文章来源地址https://www.toymoban.com/news/detail-612216.html

到了这里,关于【python脚本】python实现:目标检测裁剪图片样本,根据类标签文件进行裁剪保存的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 负样本\正样本对目标检测算法的性能影响

    最近,在做行人检测任务时,对数据进行清洗后,存在一些空标签的样本,所以,想考虑这些空标签的样本对模型的性能究竟有什么样的影响。 负样本:在目标检测任务中,数据集中部分图片没有出现目标,这些图片通常被称为负样本。 正样本:指包含目标的图像。 背景:

    2024年02月12日
    浏览(45)
  • 目标检测正负样本分配策略----ATSS

    一、ATSS 参考:https://blog.csdn.net/xuzz_498100208/article/details/110355048 https://zhuanlan.zhihu.com/p/411659547 作者提出了一种自适应的选取正样本的方法,具体方法如下: 1.对于每个输出的检测层,选计算每个anchor的中心点和目标的中心点的L2距离,选取K(mmdetection的topK是9)个anchor中心点离

    2024年02月02日
    浏览(34)
  • 利用yolov5进行目标检测,并将检测到的目标裁剪出来

    写在前面:关于yolov5的调试运行在这里不做过多赘述,有关yolov5的调试运行请看: https://www.bilibili.com/video/BV1tf4y1t7ru/spm_id_from=333.999.0.0vd_source=043dc71f3eaf6a0ccb6dada9dbd8be37 本文章主要讲解的是裁剪。 需求:识别图片中的人物并将其裁剪出来 如果只需识别人物的话,那么只需在y

    2024年02月02日
    浏览(26)
  • 目标检测误检与负样本问题

    在做目标检测算法模型的时候,有时候会遇到模型预测,效果不好,或者误识别的情况(明明人眼都能识别出来的东西, 模型却识别错误,像狗识别成猫都好理解,但会遇到一个衣服会识别成猫的),出现这些误检问题分几种情况: 1.图像内容问题 2.目标bbox范围问题 解决这

    2024年02月06日
    浏览(31)
  • 目标检测YOLO实战应用案例100讲-面向小样本的目标检测技术研究与应用

    目录 面向小样本的目标检测技术研究 传统目标检测算法  二阶段的目标检测 

    2024年02月13日
    浏览(30)
  • 基于 Opencv python实现批量图片去黑边—裁剪—压缩软件

    批量处理图片文件,批量提取GIF图片中的每一帧,具有范围裁剪、自动去除黑/白边、调整大小、压缩体积等功能。 先看一些软件的界面,是基于Tkinter写的GUI 裁剪等功能基于Opencv     我添加了处理GIF的github:  原作者的github:hiroi-sora/Umi-CUT: 图片批量去黑边/裁剪/压缩工具,

    2024年02月15日
    浏览(29)
  • 小样本目标检测综述__刘浩宇(导航与控制2021)论文阅读

    早期采用了大量标注样本回归候选框的位置,但后来 目标集和训练集数据分布不同导致检测效果下降 。 对于没有大量样本支持的小样本检测应用就需要使用 先验知识 来弥补样本的不足。 可以分为三类: 数据域 通过先验知识来做数据增强,以弥补样本不足的问题,解决模

    2024年02月12日
    浏览(35)
  • web前端之行为验证码、不同设备和屏幕尺寸呈现不同大小、元素宽度根据视口宽度进行调整、元素或图片裁剪、图片验证码

    1、版本一的样式比较齐全; 2、版本二的JS逻辑和功能效果比较完善,且是别人的代码,后续会对样式进行完善。[Gitee | 哔哩哔哩]; 3、两个版本各有千秋,主要学习里面的一些技巧,这里主要介绍版本一的样式技巧; 4、行为验证码一般是后端实现,而且大概率是使用第三方

    2024年04月17日
    浏览(41)
  • 使用YOLOv5实现图片、视频的目标检测

    接下来我将从官方代码开始,一步一步展示如何进行图片、视频识别 首先从GitHub下载官方代码(也可以从下面链接获取): 链接:https://pan.baidu.com/s/16wzV899D90TY2Xwhx4TwhA 提取码:vzvj (你的环境名可能和我不一样) 可以看到 \\\'--weights\\\' 参数(参数解读详见4.a)的默认值为\\\'yolov

    2023年04月15日
    浏览(29)
  • FSOD论文阅读 - 基于卷积和注意力机制的小样本目标检测

    标题:基于卷积和注意力机制的小样本目标检测 作者:郭永红,牛海涛,史超,郭铖 郭永红,牛海涛,史超,郭铖.基于卷积和注意力机制的小样本目标检测 [J/OL].兵工学报. https://link.cnki.net/urlid/11.2176.TJ.20231108.1418.002 典型的FSOD使用Fast R-CNN作为基本的检测框架 本文亮点:引入

    2024年01月24日
    浏览(34)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包