对抽烟检测的数据准备标注,首先将视频进行转化,但是报错,尝试视频修复。
1️⃣ MP4 Repair 0.9.0 Free Download for WindowsDownload MP4 Repair 0.9.0 : This is a wrapper or GUI around untrunc-w, the Windows version of untrunc. Untrunc is a utility for MP4 video repair.https://codecpack.co/download/untrunc.html#google_vignette
上述连接为 Windows修复损坏视频,可视化界面。
2️⃣
图 3.1 Shutter Encoder视频修复软件页面
3️⃣
图 3.2 HandBrake页面
尝试多个方法修复视频,仍然报错
图 3.3 Opencv视频转化出错
初步怀疑:
1.视频录制非法结束
2.Mac系统对编码的错误
3.内部文件加密
尝试使用ffmpeg对视频进行处理
pip install ffmpeg
安装完毕后,尝试进行视频转图片,用于图像标注
报错:
FileNotFoundError: [Errno 2] No such file or directory: 'ffmpeg'
使用conda安装,问题解决
conda install -c conda-forge ffmpeg
图 3.4 视频转换成功
打开就遇到问题
TypeError: setValue(self, a0: int): argument 1 has unexpected type 'float'
尝试修改,需要修改错误代码位置
labelimg 打框就闪退 TypeError: setValue(self, int): argument 1 has unexpected type ‘float‘_in scrollrequest bar.setvalue(bar.value() + bar.si-CSDN博客文章浏览阅读1.7w次,点赞85次,收藏194次。1.将canvas.py文件 526、530、531行的float改为int。2.在报错文件labelImg.py第965行将float改为int。_in scrollrequest bar.setvalue(bar.value() + bar.singlestep() * units) typeerhttps://blog.csdn.net/m0_74232237/article/details/130985914
之前进行了自动标注,已经保存了相应的标签数据,再使用Labelimg没有之前标注数据。
打开目标有误。使用的是YOLO格式,所以标签文件夹需要有标签文件
如:classes.txt包括标注的类别
其次,Open Dir需要打开图像文件,Open Save Dir则是需要打开含有classes.txt的标签文件夹。
保证标注文件不同命名,使用当前时间+i排序(i从0开始进行拼接)
标注数据时的快捷键:
快捷键 | |
W | 创建矩形标注框 |
D | 下一张 |
A | 上一张 |
IndexError: list index out of range
在进行标注的时候,修改某个边框会导致之前预设的classes.txt内容发生改变,使用以下命令可以解决问题。使用命令指定图片文件、预设标签文件。
labelimg */pic */classes.txt
为了使模型更具有严谨性,进行标注的数据集需要进行划分,至少为训练集,还可以设置验证集、测试集。
以下代码可以自动实现
import os
import random
import shutil
# 原始数据路径
source_images = '/mnt/data/train/dataset/images'
source_labels = '/mnt/data/train/dataset/labels'
# 输出路径
output_base = '/mnt/data/train/dataset/YOLODataset'
train_ratio = 0.8 # 80% 用于训练
# 获取所有图片文件(按文件后缀过滤)
image_files = [f for f in os.listdir(source_images) if f.endswith(('.jpg', '.jpeg', '.png'))]
image_files.sort()
# 打乱顺序
random.seed(42)
random.shuffle(image_files)
# 按比例划分
num_train = int(len(image_files) * train_ratio)
train_files = image_files[:num_train]
val_files = image_files[num_train:]
# 拷贝函数
def copy_files(file_list, subset):
image_out_dir = os.path.join(output_base, subset, 'images')
label_out_dir = os.path.join(output_base, subset, 'labels')
os.makedirs(image_out_dir, exist_ok=True)
os.makedirs(label_out_dir, exist_ok=True)
for img_file in file_list:
label_file = os.path.splitext(img_file)[0] + '.txt'
# 拷贝图片
shutil.copy(os.path.join(source_images, img_file), os.path.join(image_out_dir, img_file))
# 拷贝对应标签
label_src = os.path.join(source_labels, label_file)
if os.path.exists(label_src):
shutil.copy(label_src, os.path.join(label_out_dir, label_file))
else:
print(f"⚠️ 标签文件缺失: {label_file}")
# 拷贝文件到目标文件夹
copy_files(train_files, 'train')
copy_files(val_files, 'val')
print("✅ 数据集划分完成(训练集 + 验证集)")
Word/PPT´úÂëÔÚÏ߸ßÁÁ|Word/PPTÖвåÈë¸ßÁÁ´úÂë|Word/PPTÃÀ»¯´úÂë_Wd1x.comÔÚÏßÉú³É¿ÉÒÔÔÚword/PPTÖиßÁÁµÄ´úÂ룬֧³Ö¸÷ÀàÖ÷Á÷ÓïÑÔÔÚÏß×ÅÉ«£¬ÈôúÂë¿´ÆðÀ´¸üÃÀ¹Û¡£https://word.wd1x.com/将代码转化成任意格式,且能在word中直接插入。