2

我在我的项目中搜索了 matlab 的人脸检测。我找到了一个: http: //people.kyb.tuebingen.mpg.de/kienzle/fdlib/fdlib.htm

我下载了源代码,但它没有用,我从matlab得到了那个错误:

???'uint8' 类型的输入参数的未定义函数或方法'fdmex'。

==> tinytest 在 10 秒时出错 = fdmex(x', threshold);

主要脚本是:

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

你能找到错误吗?

4

3 回答 3

0

如果您安装了最新版本的 Matlab 并安装了计算机视觉系统工具箱,则可以使用vision.CascadeObjectDetector系统对象来检测图像中的人脸。

于 2013-12-17T16:51:51.310 回答
0

根据您的 matlab 版本,它看起来像fdlib, 带有.dll, 将其重命名为.mexw32或任何您的主机所需的名称。您可以通过运行来确定这一点:

>> mexext

mexw32

在 Matlab 命令提示符下。使用 mex 扩展名并将其重命名fdmex.dllfdmex.mexw32,或任何mexext返回,它应该可以完美运行。

如果我在我的 Windows XP 机器上运行,我会得到那张漂亮的图片:

在此处输入图像描述

但是,如果您没有 32 位机器,该软件的作者会在问题的链接上写道:

请注意,所有构建都针对 Intel Pentium CPU 进行了优化。如果您想在不同的平台上运行它,或者有任何其他问题,请告诉我。

他有一个指向他的个人资料和电子邮件的链接,因此我建议与他联系以获取 64 位版本的可执行文件。

于 2013-06-25T19:24:48.903 回答
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 :)

如果这不起作用,希望 macduffs 会,如果确实修复它,我的似乎更容易。:)

于 2013-06-25T19:35:14.923 回答