(1条消息) linuxopencv口罩识别,经过opencv读取本地或者USB摄像头,文件夹提供正负样本和opencvxml模型.rar-嵌入式文档类资源-CSDN下载
经过几天摸索,实现了人脸识别和口罩识别代码,以口罩识别为案例,下面讲解如何实现
一、首先linux安装opencv3.4.1库,我这边使用cmake-gui去安装的,执行完成后,拷贝安装包内的opencv_createsamples和opencv_traincascade到一个文件夹,这两个文件是训练xml模型使用的。文件夹有脚本,使用脚本可以直接运行图中指令,等待生成xml模型。
做好准备工作,现在我pos文件夹内的图像是带色彩的图片,图片内容是正样本带口罩的人头图像,我将其归一化了,所有图片都通过opencv代码设置成20*20并且是灰度的图片,这里方便训练,训练时间也大大的减少了。
负样本就比较简单了,保证所有图片都大于20*20像素,不用归一化直接将所有图片灰度化就可以了。
指令1:生成正样本图片文件名,顺序排列
指令2:生成负样本图片文件名,顺序排列
指令3:在samples生成所有图片的vec文件
指令4:将samples里面的文件合成总体的samples.vec
指令5:在data文件夹内生成xml,最后在程序里面使用该模型就ok了
我这边生成模型的文件结构
opencv读取摄像头,这边我将每一帧数据都显示上系统时间,并且将每一帧数据转换成yuv格式保存成文件了。
然后将每一帧的数据转为灰度显示,这里有个缺陷就是我只做一个判断,初步想是先实现人头检测的,检测到人头之后再进行口罩识别,分为两部分效果更为精确,由于人头正负样本太大,训练几天都木有完成,只能做好这个样本检测先,注意detectMultiScale参数设置
最后linux显示出图像画面,就会框出戴口罩的人物,没戴口罩就木有框框