使用Kinect进行图像处理

3

我正在尝试创建一个通过Kinect缩放和旋转图像的应用程序。目前,它可以单独实现其中一个功能。但是我希望,如果我已经旋转了图像,那么新的旋转值将在缩放时保存,这样我就可以在旋转X度的图像上进行缩放。但现在的情况是,如果我先旋转再尝试缩放,图像会回到初始阶段。

        private void TrackDistances(Skeleton skeleton)
        {
        if (skeleton.TrackingState == SkeletonTrackingState.Tracked)
        {
            ...
            if (wristLeft.Y > shoulderLeft.Y && wristRight.Y > shoulderRight.Y)
            {
                float distance = Math.Abs(wristLeft.X - wristRight.X);
                image_Zoom(distance);
             }

            if (wristLeft.Y < shoulderLeft.Y && wristRight.Y < shoulderRight.Y)
            {
                angleDeg = GetJointAngle(zeroPoint, anglePoint);
                image_Rotate(angleDeg);
            }
        }
    }
    private void image_Zoom(float distance)
    {
        //TransformGroup transformGroup = (TransformGroup)image.RenderTransform;
        //ScaleTransform scale = (ScaleTransform)transformGroup.Children[0];
        //double zoom = distance * 1.5;
        //scale.ScaleX = zoom;
        //scale.ScaleY = zoom;

        double zoom = distance * 1.5;
        double ScaleX = zoom;
        double ScaleY = zoom;
        ScaleTransform scale = new ScaleTransform(ScaleX, ScaleY);
        image.RenderTransform = scale;
    }

    private void image_Rotate(double angleDeg)
    {
        var angle = angleDeg - 180;
        RotateTransform rotate = new RotateTransform(angle);
        image.RenderTransform = rotate;
    }

有什么建议吗?

谢谢!

1个回答

0

我认为这是因为您将RenderTransform更改为ScaleTranform或RotateTransform之一。 您可以在XAML中设置图像的ScaleTransform和RotateTransform,并在代码后台中仅更改角度或缩放参数。

另请参见: {{link1:如何在inkcanvas上同时进行缩放和旋转?}}


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接