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

立即学习:【免费】手把手带你入门深度学习之150行代码的汉字识别系统-1-深度学习简介-李梓佳的在线视频教程-CSDN程序员研修院

目录

一、制作数据集代码

二、思路总结

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}" + "/%03d.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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值