我在我的项目中搜索了matlab的面部检测。 我发现了一个: http://people.kyb.tuebingen.mpg.de/kienzle/fdlib/fdlib.htm
我下载了源代码,但它没有工作,我从matlab得到了这个错误:
???未定义的功能或方法' fdmex'对于类型的输入参数 ' UINT8'
==>中的错误最小的10秒= fdmex(x',阈值);
主要脚本是:
x = imread('geeks.jpg');
% decision threshold.
% change this to a smaller value, if too many false detections occur.
% change it to a larger value, if faces are not recognized.
% a reasonable range is -10 ... 10.
threshold = 0;
imagesc(x); hold on; colormap gray;
s = fdmex(x', threshold);
for i=1:size(s,1)
h = rectangle('Position',[s(i,1)-s(i,3)/2,s(i,2)-s(i,3)/2,s(i,3),s(i,3)], ...
'EdgeColor', [1,0,0], 'linewidth', 2);
end
axis equal;
axis off
你能找到错误吗?
答案 0 :(得分:0)
根据您的matlab版本,它看起来像fdlib
,附带.dll
,将其重命名为.mexw32
或您的主机所需的任何内容。您可以通过运行以下来确定:
>> mexext
mexw32
在Matlab命令提示符下。使用mex扩展程序并将fdmex.dll
重命名为fdmex.mexw32
,或任何mexext
返回,并且它应该完美运行。
如果我在我的Windows XP机器上运行,我会得到那美丽的照片:
但是,如果您没有32位计算机,则该软件的作者会在link in the question上写入:
请注意,所有版本都针对英特尔奔腾CPU进行了优化。如果 你想在不同的平台上运行它,或者有任何其他平台 问题,请告诉我。
他有自己的个人资料和电子邮件的链接,因此我建议您与他联系以获取64位版本的可执行文件。
答案 1 :(得分:0)
通常当我看到uint8错误和灰度图像时,我需要做一个红旗我
colorImg=imread('imageName.jpg')
% Even if the image is grayscale, if its png or jpg,
% it will load in as a color image almost exclusively
img=rgb2gray(colorImg)
如果你看一下img输出,你会发现它的类型为double而不是uint8:)
如果这不起作用,希望macduff会发生,如果实际上确实修复了它,那么它似乎更容易了。 :)
答案 2 :(得分:0)
如果您安装了最新版本的Matlab并安装了计算机视觉系统工具箱,则可以使用vision.CascadeObjectDetector
系统对象来检测图像中的面部。