Ubuntu16.04 + opencv3.1.0 + python2.7.12ビデオストリームを抽出し、前記光(2)

免責事項:この記事はブロガーオリジナル記事です、続くBY-SAのCC 4.0を著作権契約、複製、元のソースのリンクと、この文を添付してください。
このリンク: https://blog.csdn.net/u014421797/article/details/102764694

1.背景

(1)構成を完了するために次の構成作業opencv_contribを完了dense_flow

2. [設定dense_flow

サイトの操作に従ってください:https://github.com/yjxiong/dense_flow/tree/opencv-3.1

(1)依存関係を追加

ターミナルを実行します。apt-getをインストールlibzip-devの

フォルダdense_flowに直接渡されるので、(2)それがクローニングされています

なお:クローンはzipファイルをダウンロードすることができないの下でプロジェクトがでなければならない、そうでない場合は++が空になりますeasylogging!

执行ます。mkdir && CDビルドを構築

执行:cmakeの。.. && -j8を作ります

1つのエラー:

エラー:「DualTVL1OpticalFlow」は「CV :: optflowのメンバーではありません

dense_flow.cppは、GPUをオプティカルフロー抽出CPUを使用したので、これは、dense_flow.cppエラーですが、私は抽出することであるたいので、ファイルが私とはほとんどを持っているので、私はsrc以下のファイルを削除し、ツールを削除しますextract_flow.cppファイルとのdense_flow.cpp上のファイルにCMakeLists.txtエントリをコメントアウト:

#add_executable( extract_cpu tools/extract_flow.cpp)
#target_link_libraries( extract_cpu ${OpenCV_LIBS} ${LIBZIP_LIBRARY} denseflow)

あなたが本当に必要な場合は、ここで見つけることができます:https://github.com/open-mmlab/mmaction/issues/15

.. cmakeのを再実行し&& -j8作ります

成功!Sahua ......

3.テスト

(1)実行して、そのフォルダ内のビデオファイルtest.mp4を置き、ビルドディレクトリ内に終了しないでください。

./extract_gpu -f=test.mp4 -x=tmp/flow_x -y=tmp/flow_y -i=tmp/image -b=20 -t=1 -d=0 -s=1 -o=dir

エラー:

2019年10月26日17:11:22353 FATAL [デフォルト]クラッシュを扱います。アプリケーション起因[SIGSEGV]信号にクラッシュした
アプリケーションを中断[デフォルト] WARN 22353:11:2019年10月26日17。理由:[5583 /dense_flow_opencv3.1/dense_flow/include/easylogging ++ / SRC / easylogging ++ H]での致命的なログ
已放弃(核心已转储)

ソリューション:; flow_y、画像フォルダ、再実行し、エラーではなく新しいフォルダtmpフォルダ、tmpに新しいflow_xを構築

なお、図オプティカルフローのY方向、抽出されたtmpファイルプラスXに見ることができる、ない画像ファイルが存在しません

(2)を行う光抽出反りの公式ウェブサイトによると:

./extract_warp_gpu -f test.avi -x tmp/flow_x -y tmp/flow_y -i tmp/image -b 20 -t 1 -d 0 -s 1 -o dir

私たちは文句を言うでしょう。

20 -t 1 -d 0 -s 1 -o dirの-b ./extract_warp_gpu -f test.avi -x TMP / flow_x -y TMP / flow_y -i TMP /画像
OpenCVのエラー:不正な引数(変換することはできません:[真] [INT])をfrom_strで、ファイル/opencv-3.1.0/modules/core/src/command_line_parser.cppは、ライン98
OpenCVのエラー:不正な引数は(変換することはできません:[真] [INT])にfrom_strに、ファイル/opencv-3.1.0/modules/core/src/command_line_parser.cpp、ライン98
OpenCVのエラー:from_strで、ファイル/opencv-3.1.0/modules:バッド引数([真] [INT]に変換することはできません) /core/src/command_line_parser.cpp、ライン98
OpenCVのエラー:不正な引数(変換することはできません:[真] [INT]に)from_strで、ファイル/opencv-3.1.0/modules/core/src/command_line_parser.cpp、ライン98
2019年10月26日17:32:00096 FATAL [デフォルト]チェック失敗しました:[video_stream.isOpened()]を開くことができませんビデオストリーム「真」オプティカルフロー抽出のため。
2019年10月26日17:32:00096は、アプリケーションを中断[デフォルト] WARN。理由:[/dense_flow_opencv3.1/dense_flow/src/dense_flow_gpu.cpp:19]で致命的なログ
(转储核心已)放弃已

そして、慎重に前のコマンドを比較し、パラメータの背中を見つけ=追加していない番号、プラスの誤差はしません、それは実行することです:

./extract_warp_gpu -f=test.mp4 -x=tmp/flow_x -y=tmp/flow_y -i=tmp/image -b=20 -t=1 -d=0 -s=1 -o=di

あなたがビデオのフレーム画像を抽出したい場合は(3)、あなたはbuild_of.pyファイルを参照し、修正することができます。

fcount = int(video.get(cv2.cv.CV_CAP_PROP_FRAME_COUNT))

次のように:

fcount = int(video.get(cv2.CAP_PROP_FRAME_COUNT))

それ以外の場合はエラーになります。

この時点で、必要なすべての機能が達成されている、残りはゆっくりと光の流れを抽出している.............

おすすめ

転載: blog.csdn.net/u014421797/article/details/102764694