c# – 网络摄像头 – 相机预览旋转错误的方式
我想要您的帮助请在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属性旋转视频窗口周围的控件 – 控件旋转,但视频图像不能正确旋转. 无论我做什么,相机预览始终是-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将框架绑定到您的View,使其优于使用您的控件后面的代码.
PS:这不是一个答案,但它是解决你的问题.我还没有发表评论,因为我没有50分:( 祝你今天愉快. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |