点击空白处退出提示
作品详情
图像处理:对获取的数据集进行处理,实现自动识别判卷,生成学情(学生信息、得分、错题题号等);yolov5模型+opencv
后端:(对学情进行统计并发布)
一:yolov5模型训练
1.使用yolov5s对答题卡信息(考号、单选、多选、判断、填空和主观题)等进行分类训练
①.以PASCALVOC的格式构建数据;
②.数据集格式转换,格式为x1,y1,x2,y2,type。(x1,y1)(x2,y2)分别表示左上角和右下角,type用0-5的整数对应;主要库os,cv2;
③.训练集、验证集、测试集的数据划分,比例3:1:1;
④.修改配置文件:新建一个.yaml文件(train.txt、val.txt、test.txt)
二、OpenCV对yolo模型预测结果进行后处理:
Ⅰ、第一步拿到图片,根据二维码进行正反面排序;
Ⅱ、每个考生和图片数量进行对应,再根据答题卡的左上角小黑块进行旋转,保证正面图片进入模型;
Ⅲ、根据yolov5模型预测返回的类别标签和相应的坐标,然后使用np.lexsort根据坐标(x,y)值进行排序,返回升序后元素对应的索引,根据索引匹配相应的labels;再根据坐标进行裁剪;
Ⅳ、各个题目类别的处理:
1、识别二维码(主要依赖第三方包pyzbar),返回学生信息(年级、姓名和考场号,判断是否为本场考试):
①.对ROI图片进行灰度处理,然后使用pyzbar进行识别获取二维码中的内容数据,
②.对得到的内容数据解密:使用PBKDF2生成解密私钥,然后使用AES进行解密。
2、是否缺考处理
①.拿到ROI图片size;
②.使用GaussianBlur和Cannny进行去噪边缘检测;
③.findContours,boundingRect进行轮廓查找并计算外接矩形,获取(x,y,w,h),通过切片获取涂卡区域;
④.使用np.logical_or(thresh,mask)*np.where(thresh==0,mask,thresh)对比两个数组,取非零值;
⑤.cv2.countNonZero统计黑色像素,然后和总像素值求比值,再根据设定的阈值得到是否填涂缺考标记;
声明:本文仅代表作者观点,不代表本站立场。如果侵犯到您的合法权益,请联系我们删除侵权资源!如果遇到资源链接失效,请您通过评论或工单的方式通知管理员。未经允许,不得转载,本站所有资源文章禁止商业使用运营!
下载安装【程序员客栈】APP
实时对接需求、及时收发消息、丰富的开放项目需求、随时随地查看项目状态
评论