0

ここに示すように、Kinect を使用してキャンバス上で最大 4 つのグリフと描画とポリゴンを検​​出する小さな C# コードがあります。

ここに画像の説明を入力

2D 拡張現実を実装し、作成されたポリゴン内に画像を投影するために、これに従ってみました。ソース画像を読み込んで BackwardQuadrilateralTransformation を適用しようとしましたが、変換された画像を表示できないようです。おそらく間違った方法を使用していますが、画像を変換してキャンバスにペイントしようとしましたが、うまくいきませんでした。メソッドを大幅に誤解しているかどうかはわかりませんが、おそらくそれは不可能です。どんな助けも大歓迎です。必要に応じて、さらにサンプル コードを提供できます。

    private void GlyphBackQuad(List<IntPoint> quadpoints)
    {
        Bitmap srcImage = new Bitmap( // my sample image filepath );
        UnmanagedImage sourceImage = UnmanagedImage.FromManagedImage(srcImage);
        BackwardQuadrilateralTransformation filter = new BackwardQuadrilateralTransformation(sourceImage, quadpoints);
        filter.Apply(sourceImage);

        Bitmap bmp = sourceImage.ToManagedImage();
        ImageBrush ib = new ImageBrush();
        ib.ImageSource = ConvertDrawingImage2MediaImageSource(bmp);
        PolyCanvas.Background = ib;
    }

コードをさらにいじった後、部分的な解決策を開発したと思いますが、まだいくつかの作業が必要ですが、これが人々の読み取り/デバッグに役立つことを願っています.

    private void GlyphBackQuad(List<IntPoint> quadpoints, Bitmap bmp)
    {
        // Read in bitmap source image and clone it to the same format as destination
        Bitmap srcImage = AForge.Imaging.Image.Clone(new Bitmap( // my sample filepath), System.Drawing.Imaging.PixelFormat.Format24bppRgb);
        System.Drawing.Imaging.BitmapData bitmapData = bmp.LockBits(new System.Drawing.Rectangle(0, 0, bmp.Width, bmp.Height), System.Drawing.Imaging.ImageLockMode.ReadWrite, System.Drawing.Imaging.PixelFormat.Format24bppRgb);
        // Convert to unmanaged image
        UnmanagedImage unmanagedImage = new UnmanagedImage( bitmapData );
        // Filter
        BackwardQuadrilateralTransformation filter = new BackwardQuadrilateralTransformation(srcImage, quadpoints);
        filter.ApplyInPlace(unmanagedImage);
        // Convert back to managed image and save
        Bitmap managedImage = unmanagedImage.ToManagedImage();
        managedImage.Save( // my save filepath, System.Drawing.Imaging.ImageFormat.Png);
    }
4

0 に答える 0