-1

データのテーブルをループするが、データをテーブルに保存しないことについて質問があります。代わりに、特定のデータの場所をテーブルに格納したいと考えています。

私が今取り組んでいるのは、黒の場合は0、白の場合は255として定義されたpgmピクセル値のテーブルです。私がこのテーブルでやりたいことは、それをループして、そのピクセルの位置、行と列の番号を配列に格納することですが、そのピクセルが 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
4

1 に答える 1

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あたかも次のように初期化されたかのように、2 要素配列の配列になることを期待する必要があります。

var locs = [
    [1, 19], [1,20], [1,21], [1,22], [2, 19], [2,22], ...
];
于 2013-07-15T16:34:51.817 に答える