我有一个关于循环数据表而不是将数据存储在表中的问题;相反,我想在表格中存储某个数据的位置。
我现在正在使用的是一个pgm像素值表,它被定义为黑色数字0和白色255。我希望用这个表循环然后循环它并将该像素的位置,行和列号存储在一个数组中,但前提是该像素显示的值为255.
我目前没有pgm表,所以我将以此为例。 为了简单起见,请你帮我只记录显示值为15的像素的位置吗?非常感谢所有答案:)
P2
# feep.pgm
24 7
15
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 3 3 3 3 0 0 7 7 7 7 0 0 11 11 11 11 0 0 15 15 15 15 0
0 3 0 0 0 0 0 7 0 0 0 0 0 11 0 0 0 0 0 15 0 0 15 0
0 3 3 3 0 0 0 7 7 7 0 0 0 11 11 11 0 0 0 15 15 15 15 0
0 3 0 0 0 0 0 7 0 0 0 0 0 11 0 0 0 0 0 15 0 0 0 0
0 3 0 0 0 0 0 7 7 7 7 0 0 11 11 11 11 0 0 15 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
答案 0 :(得分:1)
您可以这样做:
var locs = [],
row,
col,
pixelData = ...,
nRows = ...,
nCols = ...;
for (row = 0; row < nRows; ++row) {
for (col = 0; col < nCols; ++col) {
if (pixelData[row][col] == 15) {
locs.push([row, col]);
}
}
}
// now the locs array has all [row,col] locations of pixels with value 15
在上面,pixelData
将是一个行数组,每个行都是一个像素值数组:
var pixelData = [
[0, 0, 0, 0, 0, 0, 0, 0, 0, . . .],
[0, 3, 3, 3, 3, 0, 0, 7, 7, . . .],
. . .
];
最后,您应该期望locs
是一个双元素数组的数组,就像它用以下内容初始化一样:
var locs = [
[1, 19], [1,20], [1,21], [1,22], [2, 19], [2,22], ...
];