2

Python (Python(x,y) ディストリビューション) アプリケーションで、opencv (バージョン 2.3.1 の pythonxy インストーラー) を使用してビデオ ファイルを開くことができないという問題があります。ファイルの形式はかなり問題があります (通常の MPEG-2 である必要がありますが、再生に問題があるという報告がありました) が、ffdshow ビデオ デコーダーによって処理されます。

私の問題は、同じシステム上の 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. Python アプリが別のファイルの正しい結果を別の形式で提供することを確認しました
  2. Python の opencv dll のいくつかのコンパイル オプションに問題があるのではないかと考えたので、opencv dll をC:\Python27\Lib\site-packages動作中のアプリケーションのものに置き換えても、同じ結果が得られました。
  3. ファイルの名前を に変更しましたffdshow.axffdshow.ax_、C++ アプリケーションはそれをロードしませんでしたが、まだ機能していました。これには本当に混乱しました。
4

1 に答える 1

0

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

OpenCV 2.4 VideoCapture が Windows で動作しない

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

于 2014-06-10T14:50:21.660 に答える