python应用

划分数据集

将数据集划分为训练集和测试集

python 复制代码
import os  
import shutil  
import random  

# 数据集路径
images_dir = './images'  
targets_dir = './gt'  

# 划分后的路径
train_images_dir = './train/images'
test_images_dir = './test/images'
train_targets_dir = './train/gt'
test_targets_dir = './test/gt'

os.makedirs(train_images_dir, exist_ok=True)  
os.makedirs(test_images_dir, exist_ok=True)  
os.makedirs(train_targets_dir, exist_ok=True)  
os.makedirs(test_targets_dir, exist_ok=True)  

image_files = [f for f in os.listdir(images_dir) if os.path.isfile(os.path.join(images_dir, f))]  
target_files = [f for f in os.listdir(targets_dir) if os.path.isfile(os.path.join(targets_dir, f))]  

train_ratio = 0.8  
test_ratio = 1 - train_ratio  
  
combined = list(zip(image_files, target_files))  
random.shuffle(combined)  
image_files, target_files = zip(*combined)  

train_size = int(len(image_files) * train_ratio)  
test_size = len(image_files) - train_size  
train_images, test_images = image_files[:train_size], image_files[train_size:]  
train_targets, test_targets = target_files[:train_size], target_files[train_size:]  

for img, tgt in zip(train_images, train_targets):  
    shutil.copy(os.path.join(images_dir, img), os.path.join(train_images_dir, img))  
    shutil.copy(os.path.join(targets_dir, tgt), os.path.join(train_targets_dir, tgt))  

for img, tgt in zip(test_images, test_targets):  
    shutil.copy(os.path.join(images_dir, img), os.path.join(test_images_dir, img))  
    shutil.copy(os.path.join(targets_dir, tgt), os.path.join(test_targets_dir, tgt))  

print("Training and test sets have been created successfully!")

视频成帧和数据标注

python 复制代码
import imageio
 
filename = "./original.MP4"
vid = imageio.get_reader(filename, 'ffmpeg')

try:
    for num, im in enumerate(vid):
        if (num / 50) and (num % 50) == 0:    # 控制图像的输出张数;
            print(num // 50)
            imageio.imwrite('./jpg/{}.jpg'.format(num // 50), im)
        else:
            continue
except imageio.core.format.CannotReadFrameError or RuntimeError:
    pass
python 复制代码
import cv2
import os
 
"""
This code is used to:
1)对图片进行标注
2)生成对应的包含坐标信息的.txt文件
"""

imgs_path = "./jpg/"
txt_path = "./label/"
files = os.listdir(imgs_path)
img = 0
coordinates = []
 
def on_EVENT_LBUTTONDOWN(event, x, y, flags, param):
    if event == cv2.EVENT_LBUTTONDOWN:
        cv2.circle(img, (x, y), 4, (0, 255, 0), thickness=-1)
        coordinates.append([x, y])
        print([x,y])
        cv2.imshow("image", img)
 
for file in files:  # for i in range(80, len(files)):
    coordinates = []
    img = cv2.imread(imgs_path+file)
    cv2.namedWindow("image")
    cv2.setMouseCallback("image", on_EVENT_LBUTTONDOWN)
    cv2.imshow("image", img)
    cv2.waitKey(0)
    with open(txt_path+file.replace("jpg","txt"), "w+") as f:
        for coor in coordinates:
            f.write(str(coor[0])+" "+str(coor[1])+"\n")    # 记录每个人头的坐标点
        # f.write(str(len(coordinates)))                   # 记录一张图像中的人头总数
    print(file+" is ok !"+"\n")

删除不匹配的文件

python 复制代码
import os

img_folder = ".\\images"
txt_folder = ".\\gt"

img_files = [f for f in os.listdir(img_folder) if f.endswith(".jpg")]
txt_files = [f for f in os.listdir(txt_folder) if f.endswith(".txt")]
img_file_names = [os.path.splitext(f)[0] for f in img_files]
for txt_file in txt_files:
    if os.path.splitext(txt_file)[0] not in img_file_names:
        os.remove(os.path.join(txt_folder, txt_file))
        print(f"Deleted {txt_file}")
相关推荐
加点油。。。。5 小时前
【强化学习】——策略梯度方法
人工智能·机器学习·强化学习
2401_841495645 小时前
【自然语言处理】处理 GBK 编码汉字的算法设计
人工智能·python·自然语言处理·校验·文件读写·gbk编码与解码·批量过滤
怎么全是重名5 小时前
Survey on semantic segmentation using deep learning techniques
图像处理·人工智能·深度学习·图像分割
俊俊谢5 小时前
【机器学习】python使用支持向量机解决兵王问题(基于libsvm库)
python·机器学习·支持向量机·svm·libsvm
老蒋新思维5 小时前
创客匠人:工作流嵌入式智能体,重构知识变现的效率底层
大数据·服务器·人工智能·重构·创始人ip·创客匠人·知识变现
2501_941982055 小时前
展望:RPA与AI在企业微信自动化领域的未来融合趋势
人工智能·企业微信·rpa
小脉传媒GEO优化5 小时前
GEO优化数据统计系统DeepAnaX系统详细介绍:开启AI数据智能分析新范式
人工智能·信息可视化
爱笑的眼睛115 小时前
MLflow Tracking API:超越实验记录,构建可复现的机器学习工作流
java·人工智能·python·ai
世岩清上5 小时前
以技术预研为引擎,驱动脑机接口等未来产业研发与应用创新发展
人工智能·脑机接口·未来产业