在Matlab中使用矩形。使用Sum()

在Matlab中使用矩形。使用Sum(),matlab,sum,rectangles,Matlab,Sum,Rectangles,我对图像执行了rgb2gray,并对图像进行了sobel边缘检测。 然后呢 faceEdges = faceNoNoise(:,:) > 50; %binary threshold 因此,它将图像(人脸图片)的轮廓设置为黑白。值1为白色像素,0为黑色像素。有人说我可以用这个 mouthsquare = rectangle('position',[recX-mouthBoxBuffer, recY-mouthBoxBuffer, recXDiff*2+mouthBoxBuff

我对图像执行了rgb2gray,并对图像进行了sobel边缘检测。 然后呢

faceEdges = faceNoNoise(:,:) > 50;        %binary threshold
因此,它将图像(人脸图片)的轮廓设置为黑白。值1为白色像素,0为黑色像素。有人说我可以用这个

mouthsquare = rectangle('position',[recX-mouthBoxBuffer, recY-mouthBoxBuffer, recXDiff*2+mouthBoxBuffer/2, recYDiff*2+mouthBoxBuffer/2],...   % see the change in coordinates
      'edgecolor','r');
numWhite = sum(sum(mouthsquare));

他说使用两个sum(),因为它获取矩形中包含的像素的列和行。numWhite总是返回178和一些十进制数。

如果您有一个2D矩阵
M
(例如,这是一个图像),那么计算有多少元素的值为1的方法是:

count_1 = sum(M(:)==1)

如果目标值不完全为1,但Δ-阈值为+/-0.02,则应要求:

count_1_pm02 = sum((M(:)>=0.98) & (M(:)<=1.02))

count\u 1\u pm02=sum((M(:)>=0.98)和(M(:)那么,问题是什么?:-)很抱歉,它没有返回矩形中有多少白色像素的真实值。有没有办法查看矩形中有多少白色像素?除了在for循环中写一个for循环,检查每个pixle我自己,并在每次是白色像素时增加一个数字1之外?只是说,也许编辑你的张贴并添加问题。这将增加有人想出解决方案的机会。
count_1_pm02 = sum((M(:)>=0.98) & (M(:)<=1.02))