2012-09-05 13 views
6

में वीडियो कैप्चर ओपनसीवी 2.4.2 त्रुटि मुझे विंडोज एक्सपी 32 बिट्स के तहत ओपनसीवी 2.4.2 के साथ वीडियोकैप्चर क्लास का उपयोग करने में समस्या है। यह कोई फ़ाइल या कैमरा नहीं खोलता है और यह दर्द होने पर फिक्सिंग करता है। मैं विजुअल स्टूडियो 2010 का उपयोग कर रहा हूं लेकिन मैंने उसी परिणाम के साथ क्यूटीक्रिएटर में कोड भी कोशिश की है।विंडोज़

परीक्षण कोड निम्नलिखित है:

#include "opencv/cv.h" 
#include "opencv/highgui.h" 
#include <iostream> 
#include <string> 
#include <iomanip> 
#include <sstream> 

using namespace cv; 
using namespace std; 

int main() 
{ 
    const char* videoPath = "C:/video/"; 
    string videoName = string(videoPath) + "avi.avi"; 
    VideoCapture cap(videoName); 

    if(!cap.isOpened()) 
    { 
     std::cout<<"Fail"<<std::endl; 
     return -3; 
    } 
    return 0; 
} 

उत्पादन हमेशा होता है '-3'। फ़ाइल खोलने में त्रुटि (../../modules/highgui/src/cap_ffmpeg_impl.hpp:361)

मैं इसे डिबग और समस्या की पहली पंक्ति में प्रकट होता है:: क्यूटी निर्माता एक चेतावनी से पता चलता

CvCapture* cvCreateFileCapture_FFMPEG_proxy(const char * filename) 
{ 
    CvCapture_FFMPEG_proxy* result = new CvCapture_FFMPEG_proxy; 
    if(result->open(filename)) 
     return result; 
    delete result; 
#if defined WIN32 || defined _WIN32 
    return cvCreateFileCapture_VFW(filename); 
#else 
    return 0; 
#endif 
} 

cap_ffmpeg.cpp आंतरिक फ़ाइल में।

मैंने बर्फ तेंदुए के नीचे एक मैक में एक ही कोड का परीक्षण किया है और यह काम करता है। यहां कोई आश्चर्य नहीं है क्योंकि यह एक पुस्तकालय मुद्दा होना चाहिए। मैंने सी-फ़ंक्शन cvCapture का उपयोग करके एक ही पथ मार्ग के साथ एवी फ़ाइल खोली है, आसान और तेज़। मुझे मील डीबग फ़ाइल में शामिल 'सी: \ opencv \ opencv \ build \ x86 \ vc10 \ bin' के सभी डीएल मिल गए हैं। मुझे tbb.dll मिला और सभी 'सी: \ opencv \ opencv \ 3rdparty \ ffmpeg' सामग्री भी शामिल है।

यह मुझे पागल कर रहा है इसलिए किसी भी मदद की सराहना की जाएगी।

अग्रिम धन्यवाद।

+0

[इस सवाल] का पहला जवाब (http://stackoverflow.com/questions/1987782/why-opencvs-cvcreatecameracapture-and-cvcreatefilecapture-do-not-work-how) आपका मामला हो सकता है: opencv_ffmpeg242d की प्रतिलिपि बनाने का प्रयास करें आपकी वर्तमान कार्य निर्देशिका में .dll या opencv_ffmpeg242.dll। इसके अलावा, क्या आपने ओपनसीवी बनाया है? क्या आप सुनिश्चित हैं कि सभी निर्भरता ठीक है? – Sassa

+0

मुझे अभी भी एक ही समस्या है। मैंने कुछ फ़ोरम में पढ़ा है जो शायद कोडेक्स को अपडेट करना आवश्यक है। मैं कोशिश करूँगा। क्या आपने समस्या हल की है? –

उत्तर

5

मेरे मामले में, में सभी opencv_***.dll फ़ाइलों को हटाने के बाद एक ही समस्या का समाधान किया गया था। इसलिए, मैं सिर्फ "%PATH%;C: \Program Files \OpenCV2.4.2\build\x86\vc10/bin" जैसे पथ के माध्यम से dll फ़ाइलों का उपयोग करता हूं। कृपया इसे आजमाएं।

+0

धन्यवाद, यह काम किया! – Cits

+0

I (रूढ़िवादी) ने विंडोज़ \ System32 से बाहर और विंडोज \ SysWOW64 से बाहर सभी opencv _ *। Dll फ़ाइलों को स्थानांतरित करने की कोशिश की। रिबूट किया गया, अभी भी काम नहीं किया। डीएलएस को ज़िपित किया और मूल को हटा दिया; फिर से रिबूट किया, यह बहुत अच्छा काम किया! तो यंग-शिक क्वोन का सुझाव बहुत अच्छा है। –

3

मैं भी इस समस्या का सामना करना पड़ और समारोह के सही पथ से इसे हल:

:

VideoCapture cap(videoName); 

videoName की AVI फ़ाइल शामिल नहीं है मौजूद हैं, यह एक त्रुटि हो जाएगा

(../../modules/highgui/src/cap_ffmpeg_impl.hpp:XXX) 

जहां XXX लाइन संख्या का प्रतिनिधित्व करता है।

0

विंडोज 8 (64 बिट), ओपनसीवी 2.4.10 के तहत चलते समय मुझे खुली विधि के साथ एक ही समस्या थी। आईडीई x86 में चल रहा है।

मैंने पाया कि रिलीज कॉन्फ़िगरेशन में एप्लिकेशन चलाने से समस्या हल हो गई है।

उत्तर भर में ठोकर खाई क्योंकि मेरे पास imread के साथ एक ही समस्या थी। इस धागे में समस्या प्रस्तुत की जाती है। imread not working in Opencv

0

एमपी 4 फ़ाइलों के लिए नीचे मिले फिक्स को देखें। ओपनसीवी 2.4.9 का उपयोग करते हुए मुझे विंडोज 7 पर एक ही समस्या का सामना करना पड़ा। मैं ओपनसीवी के लिए जावा रैपर का उपयोग कर रहा हूं।

मैथियस क्रिंग्स ने इसके लिए बहुत सारे शोध किए हैं। this देखें। जाहिर है यह वीडियो फ़ाइल प्रकार के आधार पर एक मुद्दा है। .avi फाइलों के साथ, यह बहुत से लोगों के लिए काम करता प्रतीत होता है। दुर्भाग्यवश OPENCV_DIR को सेट करने का उनका समाधान मेरे लिए काम नहीं करता था। लेकिन बग सूची में उनकी टिप्पणियों ने मुझे इस मुद्दे को ठीक करने का संकेत दिया।निर्देशिका {opencv\install\dir}opencv-2.4.9\build\x86\vc10\bin शामिल करने के लिए

  1. सेट java.library.path:

    आप दो काम करने की है। आप जावा कमांड लाइन पर -D विकल्प का उपयोग करके चर सेट कर सकते हैं: java -Djava.library.path=PATH_TO_YOUR_DLL ...System.getProperty(...) का उपयोग करके, इस चर को अपने पर्यावरण से प्राप्त करें, और यह सत्यापित करने के लिए कि पथ सेटिंग काम कर रही है, loadLibrary() पर कॉल करने से पहले इसे प्रिंट करें।

  2. और अपने जावा वर्ग में, System.loadLibrary("opencv_ffmpeg249"); का उपयोग करके ffmpeg dll लोड करें। loadLibrary() फ़ंक्शन को जावा में static block के भीतर से बुलाया जाना चाहिए।
  3. java.library.path में opencv_ffmpeg249.dll नाम की एक फ़ाइल है जिसे हमने सेट किया है।
  4. यह .so फ़ाइलों के लिए, उबंटू पर भी काम करता है।
0

मुझे भी एक ही समस्या का सामना करना पड़ा और इनपुट वीडियो के सही स्थान को इंगित करने के बाद हल किया गया।