相机预览旋转方式错误

我想请你帮忙解决WebCamera问题。 我使用了Nuget提供的一个库; WebEye.Controls.Wpf.WebCameraControl(版本1.0.0)。 该网址是https://www.nuget.org/packages/WebEye.Controls.Wpf.WebCameraControl/

该文章和说明可在以下网址找到:http://www.codeproject.com/Articles/330177/Yet-another-Web-Camera-control

由于项目限制,我为Linx平板电脑(Windows 10)开发了WPF应用程序,而不是通用Windows应用程序。 我使用WebEye库连接到平板电脑上的网络摄像头并用它拍照。 当我在平板电脑中放置平板电脑时,它可以正常工作,但在以纵向模式放置平板电脑时不会。 在纵向模式下,CameraPreview / VideoWindow自动旋转-90度。

我试图解决问题无济于事。

  • 通过Webcamera RenderTransform或LayoutTransform属性旋转视频窗口周围的控件 - 控件旋转但视频图像无法正确旋转。
  • 试图旋转WebCamera内容属性中的VideoWindow - 我从GitHub获得源代码并将VideoWindow设置为可访问。 重新编译库并使用它通过其RenderTransform属性旋转VideoWindow。 https://github.com/jacobbo/WebEye/tree/master/WebCameraControl
  • 无论我做什么,相机预览始终是-90度。

    该库很简单,它没有很多属性来操作视频窗口。

    Web控件位于XAML中。

    <wpf:WebCameraControl x:Name="webCameraControl" 
                                  MouseDoubleClick="webCameraControl_MouseDoubleClick" 
                                  StylusButtonUp="webCameraControl_StylusButtonUp" 
                                  MouseUp="webCameraControl_MouseUp" 
                                  TouchUp="webCameraControl_TouchUp" 
                                  GotMouseCapture="webCameraControl_GotMouseCapture" 
                                  />
    

    这就是我初始化WebCamera的方式。 当UserControl加载后,它将自动连接到平板电脑上的网络摄像头。 请参阅startViewing()函数。

    private WebCameraId _cameraID = null;
    
    private void UserControl_Loaded(object sender, RoutedEventArgs e)
            {
                startViewing();
            }
    
    private void startViewing()
            {
                List<WebCameraId> cams = (List<WebCameraId>)webCameraControl.GetVideoCaptureDevices();
    
                if (cams.Count > 0)
                {
                    _cameraID = (WebCameraId)cams[0];
    
                    webCameraControl.StartCapture(_cameraID);
                }
            }
    

    我尝试强制控件在应用程序在显示屏幕中检测到更改时正确旋转它。 请参阅DisplaySettingsChanged事件。

    public ucWebCam()
    {
        InitializeComponent();
    
        Microsoft.Win32.SystemEvents.DisplaySettingsChanged += SystemEvents_DisplaySettingsChanged;
    }
    
    private void SystemEvents_DisplaySettingsChanged(object sender, EventArgs e)
    {
        try
        {
            double angle = 0;
    
            if (SystemParameters.PrimaryScreenWidth > SystemParameters.PrimaryScreenHeight)
            {
                angle = 0;
            }
            else
            {
                angle = -90;
            }
    
            webCameraControl.StopCapture();
    
            adjustWebcamAngle(angle);
    
            webCameraControl.StartCapture(_cameraID);
    
        }
        catch (Exception ex)
        {
    
        }
    }
    
    private void adjustWebcamAngle(double angle)
    {
    
        try
        {
            // IGNORE portrait boolean flag
            bool portrait = false; 
    
            if (angle == 90 || angle == 180)
            {
                portrait = true;
            }
    
            // TRIED TO SET THE ANGLE OF THE CONTROL TO NO AVAIL
            RotateTransform rotTransform = new RotateTransform(angle);
            //rotTransform.Angle = angle;
    
            ScaleTransform scaleTransform = new ScaleTransform();
            //scaleTransform.ScaleX = (portrait) ? 0 : 1;
            //scaleTransform.ScaleY = (portrait) ? 0 : 1;
    
            TransformGroup tGroup = new TransformGroup();                
            //tGroup.Children.Add(scaleTransform);
            tGroup.Children.Add(rotTransform);
    
            // ROTATE CAMERA!
            webCameraControl.RenderTransform = tGroup;
    
        } catch (Exception ex)
        {
    
        }
    }
    

    到目前为止,我只旋转了WebCam控件,而不是视频图像。

    我浏览亚历山大的文章中的评论,并不欣喜:http://www.codeproject.com/Articles/330177/Yet-another-Web-Camera-control

    我如何正确旋转相机预览? 你能告诉我哪里出错了吗?

    我附上了两张图片来说明我的问题。

    景观

    肖像


    如果您对C#不是陌生人,我会建议您使用EMGUCV nuget并创建您自己的预览应用程序。 这并不困难,您可以使用MVVM将框架绑定到您的视图,使其比使用控件背后的代码更好。

    PS:这不是一个答案,但它是解决您的问题的方法。 我不能发表评论,因为我没有50分:(

    祝你今天愉快。

    链接地址: http://www.djcxy.com/p/81045.html

    上一篇: Camera Preview rotates wrong way

    下一篇: Capturing Webcam Image without preview view or cameraUI?