2012-04-26 9 views
2

私は、python(Python(x、y)ディストリビューション)アプリケーションでopencv(pythonxyインストーラでバージョン2.3.1)を使用してビデオファイルを開くことができないという問題があります。ファイルには問題のある形式(通常のMPEG-2であるべきですが、再生に関する問題が報告されています)がありますが、ffdshowビデオデコーダが処理します。python opencvでC++アプリケーションが読み取るファイルを処理する方法は?

私の問題は、同じシステム上のopencvの異なるインスタンスがファイルを別々に処理していることです。pythonディレクトリにインストールされているバージョンがファイルを読み込めません。

他のアプリケーションと同じ方法でpythonアプリケーションでビデオファイルを処理する方法はありますか?

次のコード:

import cv2.cv as cv 
capture = cv.CaptureFromFile("film.mpeg") 

print cv.GetCaptureProperty(capture, cv.CV_CAP_PROP_POS_MSEC) 
print cv.GetCaptureProperty(capture, cv.CV_CAP_PROP_FRAME_COUNT) 
print cv.GetCaptureProperty(capture, cv.CV_CAP_PROP_CONVERT_RGB ) 

cv.SetCaptureProperty(capture, cv.CV_CAP_PROP_POS_MSEC, 50) 

frame = cv.QueryFrame(capture) 
cv.SaveImage("img.jpg",frame) 

戻り

0.0 
0.0 
0.0 

、無効なイメージファイルを書き込みます。

同時に、同じコンピュータ上でopencv(同じバージョン番号2.3.1)を使用するC++アプリケーションがあり、このような形式でファイルを開くことができます。両方のアプリケーションが使用するライブラリをリストした後、私はC++のものがffdshow.axをロードすることを発見しました(私は名前を変更しないで、以下のポイント3を見てください)。私はPythonのアプリは

  • は、私はいくつかのコンパイルオプションに問題があるかもしれないと思った別の形式で、別のファイルの正しい結果が得られることを確認した

    1. :私がこれまで行ってきた何

      私はopencv dllsをC:\Python27\Lib\site-packagesに置き換え、動作しているアプリケーションのものと同じ結果を得ました。

    2. 私はファイルffdshow.axの名前をffdshow.ax_に変更しましたが、C++アプリケーションはそれをロードせず、まだ動作していました。私は本当に混乱してしまいました。
  • 答えて

    0

    私はそのプロジェクトに戻ってきました。この質問から答え:

    OpenCV 2.4 VideoCapture not working on Windows

    を助けました。私がする必要があったのは、3rdparty/ffmpegディレクトリをPATH環境変数に追加し、dllファイル名(opencv_ffmpeg.dll - > opencv_ffmpeg246.dll)にopencvのバージョン番号を追加することでした。