我已将图像分割成碎片并使用/* Your CGFloat example */
let str = "17.30"
let flt = CGFloat((str as NSString).doubleValue) + 2.0
/* Use NSNumberFormatter to display your CGFloat
with exactly 2 fraction digits. */
let formatter = NSNumberFormatter()
formatter.maximumFractionDigits = 2
formatter.minimumFractionDigits = 2
print(formatter.stringFromNumber(flt)!)
/* 19.30 */
将它们存储在单元格数组中。我想计算每个单元格中黑色像素的百分比。实现这一目标的最佳方法是什么?
答案 0 :(得分:5)
你可以循环遍历每个元素,并计算黑色像素的数量(将像素的总和== 0)并除以该单元格中的总像素数。
for k = 1:numel(CA)
% Number of black pixels (For RGB ensures all channels are 0)
nBlack = sum(sum(all(CA{k} == 0, 3));
% Total number of pixels divided by 3rd dimension (RGB-compatible)
nPixels = numel(CA{k}) / size(CA{k}, 3);
percentBlack(k) = nBlack / nPixels;
end
或者你可以使用cellfun
为你做一些循环。
percentBlack = cellfun(@(x)sum(sum(all(x == 0, 3))) / (numel(x) / size(x,3)), CA);
输出的大小与CA
相同。
关于
sum(sum(all(x == 0, 3)))
成语的说明。基本上我们创建一个逻辑矩阵(大小为x
),其中x(k) == 0
为1,其他地方为0。对于RGB图像,我们需要检查所有通道(第三维)是否为0(all(x == 0, 3)
)。然后通过对这个逻辑数组中的所有元素(sum(sum(
)求和,我们实际上计算黑色像素的数量。