opencv级联分类器训练数据库处理脚本

级联分类器的训练过程和训练方法参考:
OpenCV 级联分类器之样本处理、训练、测试_cv分类器训练_布施的博客-CSDN博客

OpenCV: Cascade Classifier Training

级联分类器的训练需要正样本和负样本的说明文件,这个python脚本目的在于简化这一流程,快速生成说明文件

以下是我的文件结构

negdata是处理前的负样本文件

neg是处理后的负样本文件

posdata是处理前的正样本文件

pos是处理后的正样本文件

脚本代码jpg.py

import cv2
import os

def convert_to_grayscale_and_generate_txt(input_root_folder, output_folder, txt_filename):
    # 确保输出文件夹存在
    count=0#计数
    if not os.path.exists(output_folder):
        os.makedirs(output_folder)

    # 打开 txt 文件以写入数据
    with open(os.path.join(output_folder, txt_filename), 'w') as txt_file:
        # 遍历输入根文件夹中的所有文件夹
        for subfolder in os.listdir(input_root_folder):
            subfolder_path = os.path.join(input_root_folder, subfolder)

            # 检查当前路径是否为文件夹
            if os.path.isdir(subfolder_path):
                # 遍历文件夹中的所有文件
                for filename in os.listdir(subfolder_path):
                    # 检查文件扩展名是否为.jpg或.png
                    if filename.lower().endswith('.jpg') or filename.lower().endswith('.png'):
                        # 构建输入和输出文件的完整路径
                        input_path = os.path.join(subfolder_path, filename)

                        # 构建灰度图的输出路径
                        output_filename = f'{subfolder}_{filename}'  # 可以根据需要修改输出文件名
                        output_path = os.path.join(output_folder, output_filename)

                        # 读取图像
                        img = cv2.imread(input_path)
                        if img is not None:
                            # 将图像转换为灰度图
                            gray_img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)

                            # 保存灰度图
                            cv2.imwrite(output_path, gray_img)
                            count=count+1
                            # 获取图像的大小
                            # h, w = gray_img.shape[:2]
                            # 写入 txt 文件,保存生成的灰度图文件的路径
                            # txt_file.write(f'{output_path} 1 0 0 {w} {h}\n')
                            txt_file.write(f'{output_path}\n')
                            print(f'{filename} 已转换为灰度图并保存到 {output_folder}')
                        else:
                            print(f"错误:无法从路径 {input_path} 加载图像")
    print(f'共计{count}张图像\n')
    print(f'{txt_filename} 文件已生成')

# 指定输入根文件夹和输出文件夹路径以及 txt 文件名
input_folder_path = 'C:/Users/13281/Desktop/py.face-haar/negdata'
output_folder_path = 'C:/Users/13281/Desktop/py.face-haar/neg'
txt_filename = 'neg.txt'

# 调用函数进行转换和生成自定义的 txt 文件
convert_to_grayscale_and_generate_txt(input_folder_path, output_folder_path, txt_filename)

txt数据说明文件会自动生成在neg或pos文件夹内

要生成pos数据说明文件,将部分代码解除注释即可


                            # 获取图像的大小
                            # h, w = gray_img.shape[:2]
                            # 写入 txt 文件,保存生成的灰度图文件的路径
                            # txt_file.write(f'{output_path} 1 0 0 {w} {h}\n')

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值