MATLAB 是不是使用 OpenCv CascadeClassifier?
Posted
技术标签:
【中文标题】MATLAB 是不是使用 OpenCv CascadeClassifier?【英文标题】:Does MATLAB use OpenCv CascadeClassifier?MATLAB 是否使用 OpenCv CascadeClassifier? 【发布时间】:2012-09-17 02:14:11 【问题描述】:我对 MATLAB 中的 CascadeObjectDetector
有疑问。在 MATLAB 中CascadeObjectDetector
的源代码中,我看到:
pCascadeClassifier; % OpenCV pCascadeClassifier
然后我看到了:
%------------------------------------------------------------------
% Constructor
%------------------------------------------------------------------
function obj = CascadeObjectDetector(varargin)
obj.pCascadeClassifier = vision.internal.CascadeClassifier;
...
end
在stepImpl
:
bbox = double(obj.pCascadeClassifier.detectMultiScale(I, ...
double(obj.ScaleFactor), ...
uint32(obj.MergeThreshold), ...
uint32(obj.MinSize), ...
uint32(obj.MaxSize)));
你知道vision.internal.CascadeClassifier
是什么吗?仅仅是 OpenCV CascadeClassifier
吗? detectMultiScale
函数的源代码在哪里?
【问题讨论】:
最新OpenCV的detectMultiscale是here 【参考方案1】:问题是matlab提供了以下对象检测器
-
模板匹配
斑点分析
viola-jones 算法
更多信息在这里:http://www.mathworks.ch/products/computer-vision/description4.html
现在谈谈opencv。用于人脸检测(通常用于对象检测)的 opencv 函数 cv.HaarDetectObjects() 使用 viola jones 算法,该算法又使用类似 harr 的特征。
我个人的看法是,实现可能略有不同,但它们本质上具有相同的算法。
如果您仍然不相信并想使用 matlab 中的 opencv 函数,您可以使用 MEX。因此,您可以使用 matlab 中的 cv.HaarDetectObjects()。更多详情请访问:http://www.mathworks.ch/discovery/matlab-opencv.html
【讨论】:
主要问题是MATLAB版本比OpenCV好很多。例如,MATLAB 经常通过 FaceCascadeDetector 在太阳镜中找到人脸,但 OpenCV 在太阳镜中发现人脸非常罕见。你认为这是因为 MATLAB 使用了三种算法,而 OpenCV 只使用了一种算法,对吧? 不,这不是我相信的原因。我相信,它是关于使用什么样的模板(训练数据)。 MATLAB 和 OpenCV 使用相同的级联。所以问题不在于训练数据,而在于代码。以上是关于MATLAB 是不是使用 OpenCv CascadeClassifier?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 android 中提高 OpenCV 人脸检测性能?
尝试使用opencv harcascade文件查找人脸检测,但x,y,w,h值为空[关闭]