1
trainingSet = imageDatastore(syntheticDir,   'IncludeSubfolders', true, 'LabelSource', 'foldernames');
numImages = numel(trainingSet.Files);
trainingFeatures = zeros(numImages, hogFeatureSize, 'single');
faceDetector = vision.CascadeObjectDetector;
cellSize = [64 64];

for i = 1:numImages
    img = readimage(trainingSet, i);
    img = rgb2gray(img);
    bboxes = faceDetector(img);
    img = imcrop(img,bboxes);
    img = imresize(img,[100 100]);
    trainingFeatures(i, :) = extractHOGFeatures(img, 'CellSize', cellSize);  
end

上面的代码给出了“无法执行分配,因为左侧的大小是 1×2304,而右侧的大小是 1×0。” 为什么是这样?如果我删除面部检测并裁剪它不会出错。但是,当我将每个图像的大小调整为相同大小时,裁剪后 100x100,肯定不应该有大小差异吗?

4

0 回答 0