2013-11-25 9 views
13

मैं एक रोबोट बना रहा हूं जिसमें कुछ सरल ऑब्जेक्ट डिटेक्शन प्रदान करने के लिए वेबकैम होगा। अभी के लिए, मैं बस रोबोट पर होस्ट किए गए वेबपृष्ठ पर वीडियो स्ट्रीम करना चाहता हूं और इसे किसी अन्य डिवाइस से देखने में सक्षम हूं। मैंने पाइथन में एक साधारण टेस्ट स्क्रिप्ट लिखी है (मैं अंततः सी ++ पर जाउंगा, मेरी पसंद की भाषा) जो मेरे वेबकैम से स्ट्रीम प्राप्त कर सकती है, और फिर वहां से जो कुछ भी मुझे चाहिए उसके साथ करें। तब समस्या यह है कि ऐप चल रहा है, जबकि मैं वीडियो को फ़ाइल में नहीं लिख सकता, यह स्क्रिप्ट छोड़ने के बाद ही फाइल लिखता है। मेरे पास पहले से ही एक वेबसर्वर चल रहा है, और मैं एक फ़ाइल से वीडियो होस्ट करने के लिए HTML में मूल कोड भी लिख सकता हूं, और यह सब काम करता है।मैं एक HTML वेबपृष्ठ पर ओपनसीवी वीडियो कैसे स्ट्रीम करूं?

संक्षेप में: पाइथन और/या सी ++ में ओपनसीवी 2 केवल ओपनसीवी का उपयोग करके वीडियो को लाइवस्ट्रीम करने में सक्षम है? यदि नहीं, तो आप किस लाइब्रेरी की अनुशंसा करेंगे कि मैं एक सीवी कैप्चर ऑब्जेक्ट या मैट ऑब्जेक्ट लेने की कोशिश करता हूं और उसे उस स्ट्रीम पर लिखता हूं जिसे मैं वेबपृष्ठ पर रख सकता हूं? एचटीएमएल में, टैग को वीडियो स्ट्रीम करने का अच्छा विचार है?

सलाह के लिए बहुत बहुत धन्यवाद, मैं सभी पॉइंटर्स का उपयोग कर सकता हूं * मैं प्राप्त कर सकता हूं!

यदि आपको जो कुछ दिया गया है उससे आगे कुछ स्पष्टीकरण/कोड पोस्ट/स्पष्टीकरण की आवश्यकता है, तो कृपया पूछें और मैं ऐसा करूँगा!

+0

क्या आपने जिथब पर उपलब्ध किसी भी जावास्क्रिप्ट छवि/वीडियो उपकरण की समीक्षा की है? कैमानजेएस, क्लैमट्रैक, जेएस फीट .. मैट्रिस को ओपनसीवी से जेएस तक पोर्ट करना संभव है? रोबोट पर प्रोसेसर क्या है - रस्बेरी पाई, बीगलबोन, इंटेल एडिसन या कुछ फैनसीयर? शायद पूर्ण फीचर्ड ग्राफिक्स कार्ड के साथ एक मदरबोर्ड (वास्तव में तेजी से प्रसंस्करण framerates के लिए ...)? – zipzit

+0

हाय सर! आपने इस समस्या को कैसे हल किया, मेरे पास भी वही प्रश्न है। धन्यवाद! –

+0

@ बहरामडुनएडिल, प्रौद्योगिकियां बदल गई हैं ... मुझे विश्वास है कि हम ओपनसीवी 3 पर हैं, और HTTP स्ट्रीमिंग और संबंधित प्रोटोकॉल एक लंबा सफर तय कर चुके हैं।मेरे पास कोई समाधान नहीं है जो आपके लिए जरूरी काम करेगा, लेकिन मैं वीडियो स्ट्रीमिंग के लिए मौजूदा फ्रेमवर्क की कोशिश करने का सुझाव दूंगा, जैसे आरटीएमपी स्ट्रीमर। सौभाग्य! – PyroAVR

उत्तर

1

this और this पढ़ने की कोशिश करें।

तो मूल रूप से आपको ओपनसीवी फ्रेम को कैप्चर करना होगा और उन्हें स्ट्रीमिंग प्रोटोकॉल में फिट करने वाले विशिष्ट प्रारूपों में पैक करना होगा, फिर अपने सर्वर से इसे पृष्ठ पर रखने के लिए HTML5 का उपयोग करें। आपको अपने सीवी :: मैट को पैक करने के लिए वीएलसी या एफएफएमपीजी का उपयोग करने की आवश्यकता हो सकती है। उम्मीद है कि यह सहायक होगा।

+0

धन्यवाद, मैं इसे आज़माउंगा। मैं एक एम्बेडेड प्लेटफ़ॉर्म (बीगलबोन) पर चल रहा हूं, इसलिए हम देखेंगे कि यह कैसे जाता है। मैं तुम्हें तैनात रखेंगे! – PyroAVR

+2

क्या आपने इस मुद्दे को हल करने में कामयाब रहे हैं? –

2

OpenCV और अजगर से बाहर स्ट्रीमिंग फ्रेम के मुद्दे निम्नलिखित सूत्र में संबोधित किया गया है: Pipe raw OpenCV images to FFmpeg

यह मेरे लिए काम नहीं किया है, लेकिन वे दावा करते हैं कि यह उनके लिए किया था।

मेरे मामले में काम नहीं करने का कारण यह प्रतीत होता है कि कुछ आउटपुट फ्रेम के लिए अतिरिक्त बाइट जोड़े गए या खो गए थे, आउटपुट के बीच कहीं भी output.py में stdout और FFMPEG में इनपुट। इसलिए, बाइट्स की संख्या फ्रेम की संख्या से मेल नहीं खाती है। मुझे यकीन नहीं है कि यह मामला क्यों है। मैंने विंडोज 7 का उपयोग किया।

मैं यह जानकर उत्सुक रहूंगा कि यदि आप इसे आजमाते हैं तो आपका अनुभव क्या है। मैंने cv2 का उपयोग करके capture.py के संशोधित संस्करण को भी आजमाया, और उसी कारण से विफल रहा।

0

प्रयोगशाला शर्तों के तहत आप पूर्ण छवियों

आप प्रयोगशाला परिस्थितियों में होने लगते हैं भेजने के लिए, तो वहाँ एक साधारण, अभी तक प्रयोग करने योग्य समाधान है, बस WebSockets का उपयोग कर पीएनजी की धारा Base64 में। क्लाइंट साइड (वेब ​​ब्राउजर) पर आप बस बेस 64 छवियां प्राप्त करते हैं और उन्हें <img> के src में सीधे लोड करते हैं। धीमी गति के बावजूद यह लैब परिदृश्यों के लिए बहुत अच्छी तरह से काम करता है।

संबंधित मुद्दे