【发布时间】:2017-06-27 18:11:19
【问题描述】:
我遇到了一个循环计算白色像素的问题 图像的一部分,并存储总的白色像素以及 y 和 x 该部分在图像中的位置,每个都在自己的数组中。
当我打印循环内的值时,它工作得很好,但是正确 循环结束后,3 个数组用零填充。
谁能帮忙?
鳕鱼:
y = zeros(altura*largura);
x = zeros(altura*largura);
v = zeros(altura*largura);
for j=0:altura-1
for k=0:largura-1
pedaco = f8(j*40+1 : j*40+40, k*40+1 : k*40+40); %binary piece
pedac = im2uint8(pedaco);
totalBrancos = sum(sum(pedac)); %sum white pixels
pos = altura*j+k+1;
y(pos) = j;
x(pos) = k;
v(pos) = totalBrancos;
disp(y(pos)); %works
disp(x(pos)); %works
disp(v(pos)); %works
end
end
disp(y); %all zeros
disp(x); %all zeros
disp(v); %all zeros
【问题讨论】:
-
你确定都是零吗?如果矩阵很大,您可能只会在命令行窗口中看到其中的一部分。请为每个矩阵尝试
imagesc(y);。 -
这应该可以按预期工作,请提供minimal reproducible example,即定义所有变量。
-
在真正的 matlab 样式中可能应该从 1 而不是 0 开始索引。您似乎来自另一种编程语言。
-
您使用的是什么版本的 Matlab?我将其复制并粘贴到 R2012b 中,更改了一些函数并将值分配给未知数,并且一切都按预期工作 - 它看起来很奇怪,因为所有值都在最终矩阵的左侧列中您已经创建了它们并为它们编制了索引。