【手把手带你入门深度学习之150行代码的汉字识别系统】学习笔记 ·001 用OpenCV制作数据集

    技术2022-07-10  149

    立即学习:https://edu.csdn.net/course/play/24719/279505?utm_source=blogtoedu

     

    目录

    一、制作数据集代码

    二、思路总结

    1、数据集目录的准备

    2、图片的获取

    3、样本的录入与样本类型的切换

    4、数据集存放的方法

    三、API使用总结


     

    一、制作数据集代码

    import cv2 import os """数据集目录准备""" dataset_path = "./dataset" # 数据集目录 # 检验数据集目录是否存在,不存在则创建目录 if not os.path.exists(dataset_path): os.mkdir(dataset_path) # 在数据集路径下,检测3个类的路径是否存在,不存在则创建目录 for i in range(3): class_path = dataset_path + f"/{i}" if not os.path.exists(class_path): os.mkdir(class_path) """图片编号准备""" data_counter = 0 # 每一类图片的计数器 class_number = 0 # 图片类型编号 """摄像头取材准备""" capture = cv2.VideoCapture(0) while True: ret, frame = capture.read() # 获取一帧 show_img = frame.copy() # show_img是原图像frame的拷贝 crop_img = frame[100:200, 100:200] # crop_img是在原图像frame上的部分截取 cv2.rectangle(show_img, (100, 100), (200, 200), (0, 0, 255), 5) # 在show_img上画出截取部分的框框 cv2.imshow('frame', show_img) # 显示图片show_img k = cv2.waitKey(1) # OpenCV延迟1毫秒、同时检测是否有按键被按下(如果有键被按下时,将键值返回给q) # 按下Q键退出 if k == ord('q'): break # 按下S键保存 elif k == ord('s'): file_name = dataset_path + f"/{class_number}" + "/d.jpg" % data_counter # 记录保存图片的相对路径 cv2.imwrite(file_name, crop_img) # 保存图片crop_img print(f"保存 图片{data_counter}") # 打印提示 data_counter += 1 # 计数器 + 1 # 按下N键进入下一类样本的录入 elif k == ord('n'): class_number += 1 data_counter = 0 print(f"进入第{class_number}类样本的识别") capture.release() cv2.destroyAllWindows()

     

    二、思路总结

    1、数据集目录的准备

    主要靠os来判断文件夹是否存在,不存在将提前创建相应文件夹

    2、图片的获取

    主要靠OpenCV打开摄像头,截取框选区域图片进行保存

    3、样本的录入与样本类型的切换

    主要靠OpenCV获取按键,判别按键信息执行对应指令

    4、数据集存放的方法

    在一个dataset的文件夹中,有三个文件夹【0、1、2】,分别对应三类图片数据【“我”、“好”、“帅”】,每一类图片存放在相应类型的文件夹下,各存储200张,编号均为000.jpg~199.jpg

     

    三、API使用总结

    API

    作用

    使用示例

    os.path.exists

    os判断某个文件/目录是否存在

    dataset_path = "./dataset"

    if not os.path.exists(dataset_path):

            ......

    os.mkdir

    os创建某个目录

    os.mkdir(dataset_path)

    cv2.VideoCapture

    cv获取摄像头资源

    capture = cv2.VideoCapture(0)

    *.read

    cv获取摄像头的一帧

    ret, frame = capture.read()

    *.copy

    cv图片拷贝

    show_img = frame.copy()

    *[???:???, ???:???]

    cv图片截取

    crop_img = frame[100:200, 100:200]

    cv2.rectangle

    cv图片画框

    cv2.rectangle(show_img, (100, 100), (200, 200), (0, 0, 255), 5)

    cv2.imshow

    cv图片展示

    cv2.imshow('frame', show_img)

    cv2.imwrite

    cv图片保存

    cv2.imwrite(file_name, crop_img)

    cv2.waitKey

    cv等待按键

    k = cv2.waitKey(1)

    *.release

    cv释放摄像头资源

    capture.release()

    cv2.destroyAllWindows

    关闭所有cv窗口

    cv2.destroyAllWindows()

    ord

    返回字符对应的ASCII码值

    if k == ord('q'):

            break

    Processed: 0.032, SQL: 9