12

मैं पृष्ठभूमि घटाव की विधि के साथ चलती वस्तुओं का पता लगाने के लिए OpenCV2.2 का उपयोग कर रहा हूं। और मैं पृष्ठभूमि संदर्भ छवि मॉडल करने के लिए Gaussian मिश्रण मॉडल (जीएमएम) विधि का उपयोग करें।ओपनसीवी में सीवी :: BackgroundSubtractorMOG का उपयोग कैसे करें?

मैं ओपनसीवी 2.2 में प्रदान की गई कक्षा सीवी :: BackgroundSubtractorMOG का उपयोग कर सीधे अग्रभूमि पिक्सेल (या अग्रभूमि मुखौटा) प्राप्त करता हूं। यह सुविधाजनक है लेकिन सीवी :: BackgroundSubtractorMOG द्वारा लौटाया गया अग्रभूमि मुखौटा उतना अच्छा नहीं है जितना मुझे उम्मीद थी। इसके अलावा, ऐसा लगता है कि सीवी :: BackgroundSubtractorMOG OpenCV1.0 में प्रदान की गई सी भाषा में जीएमएम की विधि से गरीब है।

निम्नलिखित OpenCV2.2 में मेरे कोड है:

cv::BackgroundSubtractorMOG mog; 
mog(frame, fgMask, 0.01); 

तो, मैं एक गलत तरीके से विधि का उपयोग किया था?

वैसे, सीवी :: BackgroundSubtractorMOG अग्रभूमि पिक्सेल पर छाया हटाने का प्रदर्शन करता है?

बहुत बहुत धन्यवाद।

+0

ओपनसीवी के पृष्ठभूमि घटाव कार्यों का उपयोग करने के लिए 3.0 दस्तावेज़ों से यहां एक उपयोगी अवलोकन है: http://docs.opencv.org/master/db/d5c/tutorial_py_bg_subtraction.html – Pierz

उत्तर

12

जब आप मोग बनाते हैं, तो आप किसी भी पैरामीटर को परिभाषित नहीं कर रहे हैं, इसलिए यह डिफ़ॉल्ट पैरामीटर के साथ बनाया गया है। Here आपके पास प्रत्येक पैरामीटर का विवरण है, शायद यही वह है। 3, 4 5 गॉसियन के साथ प्रयास करें।

यह फ़ंक्शन छाया-निष्कासन को कम नहीं करता है लेकिन आपके पास this अन्य फ़ंक्शन है जो करता है। सौभाग्य!

1

this thread पर F.X. के जवाब

backgroundSubtractor = new BackgroundSubtractorMOG(3, 4, 0.8); 
+0

लेकिन यह मेरे ऐप पर बहुत धीरे-धीरे चल रहा है। मैं कुछ अच्छे पैरामीटर के लिए देख रहा हूं – austin

5

का नमूना पैरामीटर हाल एल्गोरिदम, जो पृष्ठभूमि (अग्रभूमि का पता लगाने) दूर OpenCV में मानक जीएमएम कार्यान्वयन की तुलना में बेहतर कर रहे हैं को दूर कर देता है।

उदाहरण के लिए, this journal article में वर्णित ब्लॉक-आधारित क्लासिफायर कैस्केड दृष्टिकोण है, इसके सी ++ आधारित source code के साथ।

+0

इस उपकरण का उपयोग करने के लिए इनपुट निर्देशिका संरचना कैसा दिखना चाहिए? ऐसा लगता है कि readdir पर segfault() इससे कोई फर्क नहीं पड़ता कि मैं इसे क्या फेंक देता हूं। – RussellStewart

0

मैं शुरू करने के लिए निम्न सेटिंग्स का उपयोग करने की सलाह दूंगा। इस उदाहरण मैं 3 गाऊसी मिश्रण के साथ MOG2 subtractor सेट में

cv::BackgroundSubtractorMOG2 mog; 
mog(rawFrame,foregroundFrame,-1); 
mog.set("nmixtures", 3); 
mog.set("detectShadows",1); 

: तो फिर आप अपने पैरामीटर्स की ट्यूनिंग शुरू कर सकते हैं। मैंने छाया पहचान भी सक्षम की।

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