मैं आपकी सहायता चाहूंगा कृपया वेबकैमरा समस्या पर। मैंने 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 टैबलेट के लिए एक WPF आवेदन (Windows 10) विकसित की है। मैंने टैबलेट पर वेबकैम से कनेक्ट करने और इसके साथ चित्र लेने के लिए वेबई लाइब्रेरी का उपयोग किया। जब मैं टैबलेट को परिदृश्य में रखता हूं तो यह ठीक काम करता है, लेकिन जब मैं पोर्ट्रेट मोड में टैबलेट नहीं रखता हूं। पोर्ट्रेट मोड में, कैमराप्रवाह/वीडियोविंडो स्वचालित रूप से -90 डिग्री घुमाता है।
मैंने समस्या का समाधान करने का प्रयास नहीं किया।
- वेब कैमरारा रेंडरट्रांसफॉर्म या लेआउटट्रांसफॉर्म प्रॉपर्टी के माध्यम से वीडियो विंडो के आस-पास के नियंत्रण को घुमाएं - नियंत्रण घुमाता है लेकिन वीडियो छवि सही ढंग से घूमती नहीं है।
- वेबकैमरा सामग्री संपत्ति के अंदर वीडियोविंडो को घुमाने की कोशिश की - मुझे गिटहब से स्रोत कोड मिला और वीडियोविंडो को एक्सेस के लिए उपलब्ध कराया गया। लाइब्रेरी को दोबारा लगाया और वीडियोविंडो को अपनी रेंडरट्रांसफॉर्म प्रॉपर्टी के माध्यम से घुमाने के लिए इसका इस्तेमाल किया। https://github.com/jacobbo/WebEye/tree/master/WebCameraControl
कोई फर्क नहीं पड़ता कि मैं क्या करता हूं, कैमरा पूर्वावलोकन हमेशा -90 डिग्री होता है।
लाइब्रेरी सरल है और इसमें वीडियो विंडो में हेरफेर करने के लिए कई गुण नहीं हैं।
वेबcontrol XAML में है।
<wpf:WebCameraControl x:Name="webCameraControl"
MouseDoubleClick="webCameraControl_MouseDoubleClick"
StylusButtonUp="webCameraControl_StylusButtonUp"
MouseUp="webCameraControl_MouseUp"
TouchUp="webCameraControl_TouchUp"
GotMouseCapture="webCameraControl_GotMouseCapture"
/>
इस प्रकार मैंने वेबकैमेरा शुरू किया। जब 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)
{
}
}
अब तक मैंने केवल वेबकैम नियंत्रण को घुमाया है, न कि वीडियो छवि। http://www.codeproject.com/Articles/330177/Yet-another-Web-Camera-control
मैं कैसे कैमरा पूर्वावलोकन सही ढंग से बारी बारी से कर सकते हैं:
मैं में कोई खुशी से सिकंदर के लेख में टिप्पणियों के माध्यम से देखा? क्या आप कृपया सलाह दे सकते हैं कि मैं गलत कहां जा रहा हूं?
मैंने अपनी समस्या का वर्णन करने के लिए दो छवियां संलग्न की हैं।
के बाद से इस पुस्तकालय DIrecthShow के आधार पर किया जा रहा है, मैं तुम्हें [इस उत्तर] (पढ़ने के लिए http सुझाव है : //stackoverflow.com/a/30196905/2846483)। संक्षेप में: ऐसा करने के लिए कोई आसान तरीका नहीं है। आपको या तो अपना खुद का पूर्वावलोकन इंजन लिखना होगा, या आपको अपना खुद का डायरेक्टशो फ़िल्टर बनाना होगा जो चाल करता है और इसे कैप्चर ग्राफ़ में जोड़ने के लिए। – dymanoid