2012-09-14 11 views
5

से ओपनसीवी 2.4 कैप्चरिंग फ्रेम में संभावित बग यह हो सकता है कि ओपनसीवी 2.4 हाईगुई में वीडियो में फ्रेम से कैप्चर करने के लिए कोई बग हो?वीडियो

मैं दोनों precompiled पुस्तकालयों, लोगों को मेरे द्वारा संकलित स्थापित है, मैं सब कुछ पूरी तरह से संकलन कर सकते हैं और मैं अपने कार्यक्रमों चल सकता है या

वे छवि आधारित हैं। समस्या केवल वीडियो के लिए है। हमेशा इस समारोह में OpenCV दुर्घटनाओं:

virtual IplImage* retrieveFrame(int) 
    { 
     unsigned char* data = 0; 
     int step=0, width=0, height=0, cn=0; 

     if(!ffmpegCapture || 
      !icvRetrieveFrame_FFMPEG_p(ffmpegCapture,&data,&step,&width,&height,&cn)) <-------CRASHES HERE 
      return 0; 
     cvInitImageHeader(&frame, cvSize(width, height), 8, cn); 
     cvSetData(&frame, data, step); 
     return &frame; 
    } 

इस वर्ग cap_ffmpeg.cpp के अंदर है और VideoCapture द्वारा कहा जाता है।

मैंने संस्करण 2.4.2 और 2.4.9 की कोशिश की। मेरे programes वर्किंग opencv2


अधिक जानकारी

  • साथ finde गया विंडोज 7

  • cmake साथ परियोजनाओं का निर्माण (महत्वपूर्ण है क्योंकि यह जो cmake निर्माण नहीं कर रहा है/खोज हो सकता है सही कोडेक्स)

  • विजुअलस्टूडियो 9 2008

  • OpenCV 2.4.2

संपादित

ऐसा लगता है कि यह वास्तव में एक bug है, इसलिए, मैं कैसे इस समस्या को हल और मेरे कोड बदलने avi को पढ़ने में सक्षम हो सकता है फ़ाइलें?

+2

क्यों नहीं? यह सॉफ़्टवेयर है :) ऐसा लगता है कि आपकी समस्या का वर्णन किया गया है http://code.opencv.org/issues/2115 –

+0

@ सर्गी हे, हाँ मुझे विश्वास है, लेकिन यह एक दर्द है।मुझे विकसित करने की जरूरत है और अब मुझे इसके साथ लड़ना है ... धैर्य –

+0

विवरण के अनुसार आपको 2.4-> 2.1 डाउनग्रेड करने की आवश्यकता है या बस इसे स्वयं ठीक करें और अन्य लोगों की सहायता के लिए अपने पैच को प्रकाशित करें :) मेरे ज्ञान के अनुसार यह बुरा है विंडोज पर ffmpeg का उपयोग करने के लिए विचार। AFAIR यह OpenCV के लिए DirectDraw कैप्चर होना चाहिए, लेकिन शायद मैं गलत हूं। –

उत्तर

5

एक अस्थायी समाधान के रूप में मैंने वीडियो को फिर से एन्कोड करने का निर्णय लिया ताकि ओपनसीवी ffmpeg का उपयोग न करे। मैंने वर्चुअल डबमाइक्रोसॉफ्ट वीडियो 1 संपीड़न के साथ प्रयोग किया, जो "msvidc32.dll" ड्राइवर का उपयोग करता है।

यह मेरे सभी वीडियो के साथ काम करता है, इसलिए अब तक पर्याप्त है क्योंकि मैं विंडोज़ में ओपनसीवी के साथ काम कर सकता हूं।

enter image description here

1

मैं इसी तरह की समस्या थी। मैंने वर्चुअलड्यूब डाउनलोड किया, लेकिन यह अपने एफएमपी 4 एन्कोड की वजह से मेरे एवी वीडियो में से एक नहीं खोल पाया। तो अंत में, समस्या हल करने वाला समाधान विंडोज़ के लिए एक डीकोडर ffdshow स्थापित करना था। यह लिंक देखें: http://www.moviecodec.com/video-codecs/fmp4-codec-with-virtualdub-45814/

तब मुझे वर्चुअल डब का उपयोग करने की आवश्यकता नहीं है और अब मेरे वीडियो को फिर से एन्कोड करने के लिए!

1

यदि आप x64 का उपयोग कर रहे हैं। कृपया opencv_ffmpeg245_64.dll का उपयोग करें इस हल समस्या को हल कर सकते हैं। या opencv_ffmpeg245_64.dll को opencv_ffmpeg245.dll को हल करने में समस्या का समाधान हो सकता है।