0

アップロードされたビットマップ画像からピクセルを読み取ろうとしていますが、行 aBrightness = (0.2126*aPixel[1].red) + (0.7152*aPixel[1].green) + (0.0722*aPixel[1].blue) 「不明なプロパティ:未定義の「赤」」というエラーが常に発生します。

現在のスクリプトは次のとおりです。

aBitmap = selectBitMap caption:"Select a Bitmap"
Print(aBitmap.height)
Print(aBitmap.width)
aLength = aBitmap.height
aWidth = aBitmap.width

for i = 0 to (aLength - 10) by 10 do
(
for j = 0 to (aWidth - 10) by 10 do
(
    Print(i)
    Print(j)
    aPixel = getPixels aBitmap [i,j] 1
    aBrightness = (0.2126*aPixel[1].red) + (0.7152*aPixel[1].green) + (0.0722*aPixel[1].blue)
    aBox = box pos:[i,j,0] width:0.1 length:0.1 height:aBrightness
)
)

このスクリプトに関するご支援をお待ちしております。

4

2 に答える 2

0

aPixel を使用する前に未定義かどうかを確認できます。

aPixel = getPixels aBitmap [i,j] 1
if (aPixel == undefined) do ( format "ERROR!!! [%,%]\n" i, j to:listener; continue )

aBrightness = (0.2126*aPixel[1].red) + (0.7152*aPixel[1].green) + (0.0722*aPixel[1].blue)

これは、バグがどこにあるかを把握するのに役立ちます。多くの場合、関数は変数に「未定義」を返すため、未定義かどうかを確認する必要があります。この場合、バグを修正すると、未定義の動作がなくなるため、このタイプのコードを削除できます。「print」の代わりに「format」を使用したことに注意してください。これは、ほんの少しの追加コードに使用する方がはるかに優れています。

疑わしい点が 2 つあります。

1) maxscript のほとんどのインデックスは、0 ではなく 1 で始まります。ドキュメントを確認してください。

2)Rotemが指摘したように、[y、x]ではなく[x、y]

于 2013-11-06T04:58:57.547 に答える