【手把手带你入门深度学习之150行代码的汉字识别系统】学习笔记 ·001 用OpenCV制作数据集
在这个课程里面,讲师将会带着同学们一行一行地写代码,同时也对每一行代码它的作用和目的进行讲解,以及在代码调试过程中遇到问题该怎么处理。其次,这个课程不会涉及太多原理性和数学的东西,而是把深度学习看成是一个工具去教会同学们怎么使用,非常适合刚开始接触深度学习和神经网络但不知道该如何下手的同学。最后,这个课程能教会大家一种实际项目的开发思维,适合想要使用深度学习来开发项目的同学。......
立即学习:【免费】手把手带你入门深度学习之150行代码的汉字识别系统-1-深度学习简介-李梓佳的在线视频教程-CSDN程序员研修院
目录
一、制作数据集代码
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 |
更多推荐
所有评论(0)