在MATLAB环境下进行人脸检测,利用OpenCV
这个例子展示了如何在一个图像或视频检测面临着通过使用预先构建的MATLAB®OpenCV函数接口简历:CascadeClassifier
。这个示例使用冷雾人脸检测模型训练的尺度不变的,正面的人脸检测。还在本例中,您使用createMat
效用函数来定义输入和输出数组getImage
效用函数来读取返回的输出图像OpenCV函数,和rectToBbox
效用函数将返回的人脸检测输出OpenCV函数边界框坐标在MATLAB®。
一个视频解读通过使用MATLAB工作区VideoReader
MATLAB函数。
videoSample = VideoReader (“tilted_face.avi”);
将MATLAB接口添加到OpenCV包名称导入列表。
进口clib.opencv。*;进口vision.opencv.util。*;
指定的文件名pre-trained训练哈雾人脸检测模型。
trainedModel =“haarcascade_frontalface_alt.xml”;
通过使用加载pre-trained模型负载
OpenCV函数的方法cv.CascadeClassifier
。
cascadeClassify = cv.CascadeClassifier ();cascadeClassify.load (trainedModel);
指定比例因子用于多尺度检测。
scaleFactor = 1.2;
按照以下步骤在每一帧的人脸通过使用detectMultiScale
OpenCV类的方法cv.CascadeClassifier
。
创建一个
垫
对象和存储输入帧垫
通过使用对象createMat
函数。指定垫
对象作为输入detectMultiScale
方法。创建一个MATLAB数组来表示2 d矩形的OpenCV类
简历:Rect2i
。指定数组作为输入detectMultiScale
方法。该方法使用数组返回检测结果。出口返回的检测结果
detectMultiScale
方法通过使用一个行向量rectToBbox
函数。集中的行向量指定边界框坐标索引。画上的边界框输入框来表示检测到脸。
数= 1;检测=细胞(1、videoSample.NumFrames);而(hasFrame (videoSample)) testFrame = readFrame (videoSample);[inputMat, inputArray] = createMat (testFrame);结果= clibArray (“clib.opencv.cv.Rect2i”,0);cascadeClassify.detectMultiScale (inputArray,结果,scaleFactor);如果结果。维~ = 0检测{数}= rectToBbox(结果);其他的检测{数}= [];结束testFrame = insertShape (testFrame矩形=检测{},线宽= 5);图像(testFrame、家长= gca);暂停(0.01)数=计数+ 1;结束