图像数据集构造与数据转换
毕业设计所需图像数据集的采集、处理过程以及整体思路。
文章目录
前言
记录思路与流程,仅供参考。
一、数据采集
采用手机后置摄像头拍摄人脸视频,视频分辨率1080p(1920*1080),视频帧率30fps.
二、视频分帧与图像筛选
1.视频分帧
python脚本video2image主要代码如下:
import cv2
video_full_path = "**************************.mp4"
cap = cv2.VideoCapture(video_full_path)
print("能否打开视频文件",cap.isOpened())
frame_count = 1
success = True
while (success):
success, frame = cap.read()
print('Read a new frame: ', success)
if(success):
cv2.imwrite("***************" + "_%d.jpg" % frame_count,
frame, [int(cv2.IMWRITE_JPEG_QUALITY), 95])
frame_count = frame_count + 1
cap.release()
2.图像筛选
手动筛选合格的图像并rename
三、图像裁剪
手动裁剪图像的指定区域,要求裁剪后图像尺寸一致。
1、编写图像裁剪工具
python图像裁剪工具ImageProcessingTool_V2.0主要代码如下:
import sys
from PyQt5.QtWidgets import QApplication, QMainWindow
import ui
from work import Work
if __name__ == '__main__':
app = QApplication(sys.argv)
ui = ui.Ui_MainWindow()
work = Work(ui)
ui.show()
sys.exit(app.exec_())
2、使用图像裁剪工具
四、图像人脸数据提取
1、依托编译好的ImageProcess.exe编写python程序(SVMTrain-main)提取图像人脸信息
- 注意图像的分类存储与提取
order=r'ImageProcess.exe -fdir "E:\DataSet\Down" ' \
r'-of "E:\features.csv"'
pi= subprocess.Popen(order , shell=True , stdout=subprocess.PIPE , cwd="E:\\OpenFace\\x64\\Release")
for i in iter(pi.stdout.readline,'b'):
if pi.poll() == 0:
break
print(i.decode('gbk')) # 编码问题
print("features.csv is end!")
提取到的分类信息存储结果:
2、文件合并(构造数据集)
在提取到分类数据的基础上,运行python程序SVMTrain_MergeFile,得到得到两个所需的数据集文件。
五、END!
后续就是分类器的训练了,下篇博文再说。
总结
介绍了一个简单图像数据集的构造过程,主要用于毕业论文的实验部分,对于构造人脸数据集或目标检测数据集具有一定的参考意义。