ट्रैकिंग के साथ ओपनसीवी मोशन डिटेक्शन मुझे वेब कैम के वीडियो फ्रेम में एक मजबूत गति का पता लगाने और ट्रैकिंग की आवश्यकता है। पृष्ठभूमि हमेशा एक ही है। उद्देश्य छाया के बिना यदि संभव हो, तो वस्तु की स्थिति की पहचान करना है, लेकिन छाया को हटाने के लिए इतना जरूरी नहीं है। मैंने बैकग्राउंड घटाव और थ्रेसहोल्डिंग के लिए ओपनसीवी एल्गोरिदम की कोशिश की है, लेकिन यह पृष्ठभूमि के रूप में केवल एक छवि पर निर्भर करता है, अगर पृष्ठभूमि चमक में थोड़ा सा बदलता है (या कैमरा ऑटो फोकस), तो मुझे एल्गोरिदम के लिए मजबूत होने की आवश्यकता है चमक या कुछ छाया के रूप में छोटे बदलाव।ट्रैकिंग
ट्रैकिंग
उत्तर
ट्रैकिंग के लिए मजबूत तरीका व्यापक अनुसंधान हितों का हिस्सा हैं जो दुनिया भर में विकसित किए जा रहे हैं ... यहां आपकी समस्या को हल करने के लिए शायद कुंजी हैं जो बहुत ही रोचक लेकिन चौड़ी और खुली हैं।
सबसे पहले उनमें से बहुत से चमक स्थिरता मानते हैं (इसलिए आप जो पूछते हैं वह हासिल करना मुश्किल है)। उदाहरण के लिए:
- लुकास-कनाडे
- हॉर्न-Schunk
- ब्लॉक मिलान
व्यापक रूप से नज़र रखने के लिए इस्तेमाल किया, लेकिन चमक भक्ति मान लिया गया है।
फिर अन्य रोचक लोगों meanshift किया जा सकता है या camshift ट्रैकिंग, लेकिन आप एक प्रक्षेपण का पालन करने के ... लेकिन यदि आप एक में पीछे से प्रोजेक्शन निश्चित सीमा के अनुसार गणना की मजबूती के लिए अपनी आवश्यकताओं फिट करने के लिए उपयोग कर सकते हैं की जरूरत है ...
मैं बाद में पोस्ट करूंगा, जूलियन,
जब आप ओपनसीवी में थ्रेसहोल्डिंग करने का प्रयास करते हैं तो क्या आप इसे आरजीबी (लाल, हरा, नीला) या एचएसवी (रंग, संतृप्ति, मूल्य) रंग प्रारूपों के साथ कर रहे हैं? व्यक्तिगत अनुभव से, मुझे एचडीवी एन्कोडिंग को वीडियो फुटेज में रंगीन वस्तुओं को ट्रैक करने के लिए कहीं अधिक बेहतर लगता है जब ब्लॉबहोल्डिंग के लिए ओपनसीवी के साथ संयोजन और ब्लॉब स्थान की पहचान के लिए cvBlobsLib के साथ प्रयोग किया जाता है।
एचएसवी आसान है क्योंकि एचएसवी का रंग केवल रंग ("ह्यू") का पता लगाने के लिए एक ही संख्या का उपयोग करने का लाभ है, इसके बावजूद उस रंग के कई रंग होने की वास्तविक संभावना के बावजूद, प्रकाश से लेकर गहरे रंग के रंग (रंग की मात्रा और रंग की चमक क्रमशः "संतृप्ति" और "मान" पैरामीटर द्वारा नियंत्रित की जाती है)।
मैं सीमा एचएसवी संदर्भ छवि ('imgHSV') एक बाइनरी (काले और सफेद) छवि cvInRange() OpenCV एपीआई के लिए एक कॉल का उपयोग कर प्राप्त करने के लिए:
cvInRangeS(imgHSV,
cvScalar(104, 178, 70 ),
cvScalar(130, 240, 124),
imgThresh);
उपरोक्त उदाहरण में, दो cvScalar पैरामीटर एचएसवी मानों के निचले और ऊपरी सीमाएं हैं जो रंगों में नीले रंग के रंगों का प्रतिनिधित्व करते हैं। अपने प्रयोगों में मैं ऑब्जेक्ट्स (स्क्रीन) के स्क्रीनशॉट को पकड़कर कुछ उपयुक्त अधिकतम/न्यूनतम मान प्राप्त करने में सक्षम था, जो मुझे होने वाले ह्यू/संतृप्ति/लम मानों के प्रकारों को ट्रैक करने और देखने में रूचि रखते थे।
कोड नमूने के साथ अधिक विस्तृत विवरण इस blog posting पर पाए जा सकते हैं।
Andrian एक शांत ट्यूटोरियल http://www.pyimagesearch.com/2015/05/25/basic-motion-detection-and-tracking-with-python-and-opencv/
मैं पीछा किया है और एक अच्छा प्रयोग परीक्षण https://youtu.be/HJBOOZVefXA
है मैं स्थिर चित्र के रूप में अच्छी तरह से
frameDelta = cv2.absdiff(firstFrame, gray)
thresh = cv2.threshold(frameDelta, 25, 255, cv2.THRESH_BINARY)[1]
thresh = cv2.dilate(thresh, None, iterations=2)
(cnts, _) = cv2.findContours(thresh.copy(), cv2.RETR_EXTERNAL,
cv2.CHAIN_APPROX_SIMPLE)
4 लाइनों कोड खोजने गति अच्छी तरह से अच्छी किस्मत का उपयोग