在使用matlab的vision.CascadeObjectDetector()等函数时,出现了如下具体的错误:
Error using images.internal.imageDisplayParsePVPairs (line 125)
Invalid input arguments.
Error in images.internal.imageDisplayParseInputs (line 69)
[common_args,specific_args] =images.internal.imageDisplayParsePVPairs(varargin{:});
Error in imshow (line 245)
images.internal.imageDisplayParseInputs({‘Parent’,‘Border’,‘Reduce’},preparsed_varargin{:});
Error in imcrop>parseInputs (line 252)
imshow(a,cm);
Error in imcrop (line 93)
[x,y,a,cm,spatial_rect,h_image,placement_cancelled] =
parseInputs(varargin{:});
Error in findOutWhyWrong (line 24)
faceout1=imcrop(I,bbox);
我的程序功能是在人脸表情数据集上利用CascadeObjectDetector(该函数利用了Viola-Jones算法进行人来能检测)函数裁剪出人脸表情,除去非表情之外的干扰因素。然而输入某些图片时却出现了文章开头所示的错误,原因是这些图片被程序识别出了多个“人脸”,导致使用imcrop裁剪功能函数时出错。

我的解决办法:在函数
faceDetector = vision.CascadeObjectDetector();
中加入参数'MinSize',[50 50],即
faceDetector = vision.CascadeObjectDetector('MinSize',[50 50]);
参数'MinSize',[50 50]意思是检测到的人脸大小最小范围是50×50(单位:像素),小于50×50的“人脸”被忽略。参数根据实际情况大概地选取吧。加入参数后的检测结果:

此时再使用裁剪函数imcrop时系统不再报错。
关于CascadeObjectDetector函数的函数详细介绍可访问:mark work对vision.CascadeObjectDetector的说明
文档是英文的,可以选择chrome浏览器翻译(需要翻越长城)
在使用Matlab的vision.CascadeObjectDetector函数处理人脸表情数据集时遇到错误:Error using images.internal.imageDisplayParsePVPairs。原因是部分图片被识别出多个小尺寸人脸。通过设置CascadeObjectDetector的'MinSize'参数为50x50,忽略小于这个尺寸的检测结果,成功解决了报错问题,并能正常进行人脸裁剪。

1万+

被折叠的 条评论
为什么被折叠?



