6

WindowsXP32ビットでOpenCV2.4.2でVideoCaptureクラスを使用する際に問題が発生しました。ファイルやカメラを開かず、修正するのは面倒です。Visual Studio 2010を使用していますが、QTcreatorのコードも試しましたが同じ結果になりました。

テストコードは次のとおりです。

#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」です。Qt Creatorは警告を表示します:ファイルを開くときにエラーが発生しました(../../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内部ファイルにあります。

私はユキヒョウの下でマックで同じコードをテストしました、そしてそれは働きます。これはライブラリの問題であるに違いないので、ここで驚くことはありません。c-function cvCaptureを使用して、同じパスルートでaviファイルを簡単かつ高速に開きました。miデバッグファイルに含まれている「C:\ opencv \ opencv \ build \ x86 \ vc10\bin」のすべてのdllを取得しました。tbb.dllとすべての「C:\ opencv \ opencv \ 3rdparty\ffmpeg」コンテンツも含まれています。

これは私を夢中にさせているので、どんな助けもいただければ幸いです。

前もって感謝します。

4

5 に答える 5

5

opencv_***.dll私の場合、のすべてのファイルを削除した後、同じ問題が解決されましたC:\Windows\System32。だから、私はちょうどのようなパスを介してdllファイルを使用します"%PATH%;C: \Program Files \OpenCV2.4.2\build\x86\vc10/bin"。ぜひお試しください。

于 2013-02-19T12:43:51.267 に答える
3

また、この問題に直面し、関数のパスを修正することで解決しました。

VideoCapture cap(videoName);

videoNameのAVIファイルが存在しない場合は、エラーになります。

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

ここで、XXXは行番号を表します。

于 2014-03-31T08:26:48.053 に答える
0

Windows 8(64ビット)、opencv 2.4.10で実行しているときに、openメソッドで同じ問題が発生しました。IDEはx86で実行されています。

リリース構成でアプリケーションを実行すると、問題が解決することがわかりました。

私は未読で同じ問題を抱えていたので、答えに出くわしました。問題はこのスレッドで提示されます。 OpenCVで動作しないimread

于 2014-12-13T14:48:25.993 に答える
0

mp4ファイルについては、以下で見つけた修正を参照してください。OpenCV2.4.9を使用してWindows7で同じ問題に直面しました。opencvのJavaラッパーを使用しています。

Matthias Kringsは、このために多くの研究を行ってきました。これを参照してください。どうやらこれはビデオファイルの種類に基づく問題です。.aviファイルを使用すると、多くの人に効果があるようです。残念ながら、OPENCV_DIRを設定するという彼の解決策は私にはうまくいきませんでした。しかし、バグリストの彼のコメントは私に問題を修正するためのヒントを与えてくれました。

あなたは2つのことをしなければなりません:

  1. java.library.pathディレクトリを含めるように設定します{opencv\install\dir}opencv-2.4.9\build\x86\vc10\bin-Djavaコマンドラインのオプションを使用して変数を設定できますjava -Djava.library.path=PATH_TO_YOUR_DLL ...。また、を使用してこの変数を環境からフェッチし、をSystem.getProperty(...)呼び出す前にloadLibrary()出力して、パス設定が機能していることを確認します。
  2. そして、Javaクラスで、を使用してffmpegdllをロードしますSystem.loadLibrary("opencv_ffmpeg249");。この関数は、JavaloadLibrary()のa内から呼び出す必要があります。static block
  3. opencv_ffmpeg249.dll設定したにという名前のファイルがありますjava.library.path
  4. これは、ファイルのubuntuでも機能し.soます。
于 2015-03-26T12:21:23.923 に答える
0

私も同じ問題に直面し、入力ビデオの正しい場所を指して解決しました。

于 2017-09-22T18:49:33.250 に答える