私はactionscriptの初心者です。私が正しく理解している場合、DisplacementMapFilterは、「MAP画像」内の対応するピクセル位置の色に従ってピクセルを「ソース画像」から移動します。DisplacementMapFilterはどのように機能しますか?
問題は、宛先イメージにソースイメージにないピクセルが含まれていることです。
例えば、私はこれのBitmapDataと単色10 * 10ピクセルの元画像」を撮る:
今sourceBitmap = new BitmapData(BITMAP_WIDTH, BITMAP_HEIGHT, false, 0x000002);
produce:
0 1 2 3 4 5 6 7 8 9
[002,002,002,002,002,002,002,002,002,002] Row 0
[002,002,002,002,002,002,002,002,002,002] Row 1
[002,002,002,002,002,002,002,002,002,002] Row 2
[002,002,002,002,002,002,002,002,002,002] Row 3
[002,002,002,002,002,002,002,002,002,002] Row 4
[002,002,002,002,002,002,002,002,002,002] Row 5
[002,002,002,002,002,002,002,002,002,002] Row 6
[002,002,002,002,002,002,002,002,002,002] Row 7
[002,002,002,002,002,002,002,002,002,002] Row 8
[002,002,002,002,002,002,002,002,002,002] Row 9
、私はこのBLACK変位MAPを取ると、私は少し青い四角を追加します。
displacementBitmap = new BitmapData(BITMAP_WIDTH,BITMAP_HEIGHT,false,0x000000);
for(i=5;i<10;i++)
for(j=5;j<10;j++)
displacementBitmap.setPixel(i,j,255);
produce:
0 1 2 3 4 5 6 7 8 9
[000,000,000,000,000,000,000,000,000,000] Row 0
[000,000,000,000,000,000,000,000,000,000] Row 1
[000,000,000,000,000,000,000,000,000,000] Row 2
[000,000,000,000,000,000,000,000,000,000] Row 3
[000,000,000,000,000,000,000,000,000,000] Row 4
[000,000,000,000,000,255,255,255,255,255] Row 5
[000,000,000,000,000,255,255,255,255,255] Row 6
[000,000,000,000,000,255,255,255,255,255] Row 7
[000,000,000,000,000,255,255,255,255,255] Row 8
[000,000,000,000,000,255,255,255,255,255] Row 9
結果:
displacementFilter = new DisplacementMapFilter();
displacementFilter.alpha=0;
displacementFilter.color=0;
displacementFilter.mapPoint=new Point(0,0);
displacementFilter.scaleX=1;
displacementFilter.scaleY=1;
displacementFilter.componentX = flash.display.BitmapDataChannel.BLUE;
displacementFilter.componentY = flash.display.BitmapDataChannel.BLUE;
displacementFilter.mapBitmap = displacementBitmap;
destinationBitmap = new BitmapData(BITMAP_WIDTH,BITMAP_HEIGHT,false,0xFFFFFFFF);
destinationBitmap.applyFilter(
sourceBitmap.bitmapData,
new Rectangle(0,0,BITMAP_WIDTH,BITMAP_HEIGHT),
new Point(0,0),
displacementFilter
);
produce:
0 1 2 3 4 5 6 7 8 9
[002,002,002,002,002,002,002,002,002,002] Row 0
[002,002,002,002,002,002,002,002,002,002] Row 1
[002,002,002,002,002,002,002,002,002,002] Row 2
[002,002,002,002,002,002,002,002,002,002] Row 3
[002,002,002,002,002,002,002,002,002,002] Row 4
[002,002,002,002,002,001,001,001,001,001] Row 5
[002,002,002,002,002,001,001,001,001,001] Row 6
[002,002,002,002,002,001,001,001,001,001] Row 7
[002,002,002,002,002,001,001,001,001,001] Row 8
[002,002,002,002,002,001,001,001,001,001] Row 9
私は存在していない「001」ピクセルを持っている理由だから私は理解していませんソースイメージ
ありがとうございました。
今、私の[質問](http://stackoverflow.com/questions/9260717/displacement-map-filter-in-opencv)に恥知らずなプラグインの時間。 – karlphillip