主要内容

在MATLAB环境下进行人脸检测,利用OpenCV

这个例子展示了如何在一个图像或视频检测面临着通过使用预先构建的MATLAB®OpenCV函数接口简历:CascadeClassifier。这个示例使用冷雾人脸检测模型训练的尺度不变的,正面的人脸检测。还在本例中,您使用createMat效用函数来定义输入和输出数组getImage效用函数来读取返回的输出图像OpenCV函数,和rectToBbox效用函数将返回的人脸检测输出OpenCV函数边界框坐标在MATLAB®。

一个视频解读通过使用MATLAB工作区VideoReaderMATLAB函数。

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;

按照以下步骤在每一帧的人脸通过使用detectMultiScaleOpenCV类的方法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;结束

图包含一个坐标轴对象。坐标轴对象包含一个类型的对象的形象。

另请参阅

对象

功能

相关的话题