2014-10-10 14 views
7

मैं एक वीडियो रिकॉर्ड करने और इसे स्ट्रीम के रूप में भेजने के लिए OpenCV का उपयोग करना चाहता हूं। मैं एक नौसिखिया हूं और मुझे यह जानने की ज़रूरत है कि ओपनसीवी मुख्य धागा को अवरुद्ध करता है या क्या यह खुद थ्रेड हो गया है?क्या OpenCv पहले ही थ्रेड किया गया है?

मैंने ओपनसीवी दस्तावेज (2.4.9) पढ़ा और मुझे कोई जवाब नहीं मिला।

पढ़ने के लिए धन्यवाद।

+0

यह अवरुद्ध है। कम से कम सभी कार्यों जो मुझे पता है। – Micka

उत्तर

5

ओपनसीवी फ़ंक्शन को कॉल करते समय थ्रेड को बढ़ा सकता है। हालांकि, कॉलिंग थ्रेड पर नियंत्रण वापस करने से पहले सभी काम किया जाता है। कई कारणों से, एसिंक्रोनस प्रोसेसिंग जटिलता का एक बड़ा अतिरिक्त जोड़ देगा। (उदाहरण के लिए, उदाहरण के लिए: गणना कब की गई थी जब आपका प्रोग्राम कैसे पता चलेगा?) अगर कार्यक्रम को अतुल्यकालिक होने की आवश्यकता नहीं है तो यह कुछ अवांछित ओवरहेड भी पेश करेगा।

आप कम से कम प्रयास के साथ एसिंक्रोनस प्रोसेसिंग कर सकते हैं, हालांकि C++11's threading API के साथ।

+2

हां यह धागे को जन्म दे सकता है। ओपनसीवी समानांतर में डेटा के विभिन्न हिस्सों (समानांतर क्षेत्रों ") को संसाधित करने के लिए एकाधिक धागे का उपयोग कर सकता है। [SetNumThreads] देखें (http://docs.opencv.org/modules/core/doc/utility_and_system_functions_and_macros.html#setnumthreads) और विवरण के लिए आस-पास के फ़ंक्शन देखें। – artm

+0

आह, अच्छा बिंदु। मुझे स्पष्टीकरण दें। – thirtythreeforty

3

ओपनसीवी को ओपनएमपी समर्थन के साथ बनाया जा सकता है ताकि कंप्यूट फ़ंक्शन आपकी मशीन पर सभी उपलब्ध कोर का उपयोग कर सकें। इसे ओपनसीएल और सीयूडीए के साथ भी बनाया जा सकता है। इसके अलावा इसमें सिम ऑप्टिमाइज़ेशन झंडे हैं।

यदि आप इसे इस तरह के समर्थन के साथ नहीं बनाते हैं तो यह सिंगल थ्रेडेड चलाएगा।

किसी भी संस्करण में, ओपनसीवी फ़ंक्शन कॉल करने से लॉन्चर थ्रेड ब्लॉक करता है जब तक यह सभी परिचालनों की गणना नहीं करता है। जीपीयू में गणना को ऑफ़लोड करते समय भी यह सच है।

+1

शीर्षक के बावजूद, मुझे लगता है कि मुख्य सवाल यह था कि "ओपनसीवी मुख्य धागा को अवरुद्ध करता है" – Micka

0

ओपनसीवी के समांतर_for संचालन संचालन के लिए कई धागे बनाता है। यह एक थ्रेड पूल बनाता है और पूरे काम को वितरित करता है।

सेट नॉट थ्रेड फ़ंक्शन द्वारा थ्रेड की संख्या तय की जाती है। सीरियल काम के लिए इसे शून्य पर सेट करें। [यह परिवर्तन थ्रेडिंग लाइब्रेरी पर आधारित है जो ओपनसीवी के साथ निर्मित है। कुछ के लिए यह 1]

नोट: मेरे पास कुछ थ्रेडिंग मुद्दे थे जहां मैं अपना खुद का थ्रेडपूल प्रबंधित कर रहा था।

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