【深度学习】修改源码以实现预测整个文件夹和保存txt文件(自用笔记

此笔记是为记录一下,为解决某模型只能预测一张图,并且不能生成相应的txt文件的问题


python 复制代码
def main():
    if os.path.isdir(directory_path):
        files = os.listdir(directory_path)
        for file in files:
            file_path = os.path.join(directory_path, file)
            if os.path.isfile(file_path):
                try:
                    origin_img = np.asarray(Image.open(file_path).convert('RGB'))
                    bboxes = [[1, 2, 3, 4], [5, 6, 7, 8]]
                    scores = [100, 99]
                    cls_inds = [0, 1]
                    vis_res = visualize(origin_img, bboxes, scores, cls_inds, conf=0.6, save_name=os.path.basename(file_path), save_result=True)
                    print(os.path.basename(file_path))
                except Exception as e:
                    print(f"读取文件 {file} 时发生错误:{e}")
    else:
        print(f"{directory_path} 不是一个目录。")
python 复制代码
def visualize(image, bboxes, scores, cls_inds, conf, save_name='vis.jpg', save_result=True):
    # 写入txt文件 一行一行的写入
    vis_img, labels = vis(image, bboxes, scores, cls_inds, conf, class_names)
    img_name = save_name.split('.')[0]
    txt_name = img_name + '.txt'
    if save_result:  # 把已经框好的照片写进去
        save_path = os.path.join(output_dir, save_name)
        print(f"save visualization results at {save_path}")
        save_txt_path = os.path.join(output_dir, txt_name)
        for i in range(len(labels)):
            label = labels[i]
            with open(save_txt_path, 'a') as fp:
                fp.write(label)

        # cv2.imwrite(save_path, vis_img[:, :, ::-1])
    return vis_img
python 复制代码
def vis(img, boxes, scores, cls_ids, conf=0.5, class_names=None):
    # 返回labels数组
    labels = []
    for i in range(len(boxes)):
        box = boxes[i]
        cls_id = int(cls_ids[i])
        score = scores[i]
        if score < conf:
            continue
        x0 = int(box[0])
        y0 = int(box[1])
        x1 = int(box[2])
        y1 = int(box[3])
        x2 = float(box[0])
        y2 = float(box[1])
        x3 = float(box[2])
        y3 = float(box[3])
        score_txt = float(score)

        label = str(x2)+' '+str(y2)+' '+str(x3)+' '+str(y3)+' '+str(score)+' '+str(cls_id)+'\n'
        labels.append(label)
    return img, labels
相关推荐
摇滚侠3 分钟前
Spring Boot 3零基础教程,WEB 开发 自定义静态资源目录 笔记31
spring boot·笔记·后端·spring
摇滚侠5 分钟前
Spring Boot 3零基础教程,WEB 开发 Thymeleaf 遍历 笔记40
spring boot·笔记·thymeleaf
~kiss~6 分钟前
图像处理之膨胀
图像处理·人工智能·计算机视觉
科兽的AI小记28 分钟前
市面上的开源 AI 智能体平台使用体验
人工智能·源码·创业
云雾J视界1 小时前
开源协作2.0:GitHub Discussions+AI重构开发者社区的知识共创生态
人工智能·开源·github·discussions·知识共创·社区知识·ai重构
橘子海全栈攻城狮1 小时前
【源码+文档+调试讲解】基于SpringBoot + Vue的知识产权管理系统 041
java·vue.js·人工智能·spring boot·后端·安全·spring
Chloeis Syntax1 小时前
接10月12日---队列笔记
java·数据结构·笔记·队列
QT 小鲜肉1 小时前
【个人成长笔记】Qt 中 SkipEmptyParts 编译错误解决方案及版本兼容性指南
数据库·c++·笔记·qt·学习·学习方法
赋范大模型技术社区1 小时前
OpenAI Agent Kit 全网首发深度解读与上手指南
人工智能·workflow·内置评估
阿里云大数据AI技术1 小时前
云栖实录 | AI 搜索智能探索:揭秘如何让搜索“有大脑”
人工智能·搜索引擎