web-dev-qa-db-ja.com

VideoCaptureがAnacondaで機能しない

私はubuntu14.04を使用していて、anaconda pythonをインストールしています。condainstallopencvとcondainstall cv2を使用してopencvをインストールしました。しかし、VideoCaptureをまったく使用できません(ビデオを処理する必要があります)フレームごと)。プロジェクトの残りの部分ではanacondaを使用する必要があります。

これが私のコードです:

import cv2
import os
capture = cv2.VideoCapture('/home/Downloads/data/zfH2XdRcH14.mp4')
while not capture.isOpened():
    print 'noob'
while True:
    ret, frame = capture.read()
    cv2.imwrite('~/Downloads/data/pic.png',frame)
    cv2.imshow('Video', frame)
    count += 1
    print count

コードはnoobを出力し続けます。場所を何度も確認しましたが、正しいです。私は問題が何であるか見当がつかず、私はこれに何時間も立ち往生しています。

8
user3892614

解決策は、opencvでffmpegをコンパイルすることです。 opencv3については、 https://github.com/menpo/conda-opencv を参照してください。

Opencv2については、 http://dhaneshr.net/2016/06/03/installing-opencv-2-4-x-with-ffmpeg-python-on-anaconda/ を参照してください。

4
Hong

ffmpegはデフォルトのcondaチャネルには存在しません。

ビデオ処理用の最新および追加のパッケージと依存関係を含むconda-forgeチャネルからopencvをダウンロードする必要があります。次のことを試してください。

conda install -c conda-forge ffmpeg
conda install -c conda-forge opencv

ここで、-cは、チャネルに「conda-forge」として使用するように指示します。

4
Renil Joseph

私は同じ問題に遭遇しました。 ffmpegが有効になっていないため、VideoCaptureはCondaのデフォルトバージョンのOpenCVでは機能しません。 VideoCaptureを機能させるには、CmakeGUIでffmpegを有効にしてコンパイルする必要があります。 ffmpegが有効になっている私のバージョンのOpenCVをインストールすることもできます。

conda install -c https://conda.binstar.org/jaimeivancervantes opencv

私も同じ問題を抱えていたと思います。 libフォルダーをPATHに追加して修正しました。例えば、

export PATH="/home/iori/anaconda3/bin:$PATH"
export PATH="/home/iori/anaconda3/lib:$PATH"

私の.bachrcにはこの2行目があります。最初の行はanacondaによって追加され、source activateコマンドはこのbinフォルダーを切り替えますが、opencvがそことのlib_opencv_*.soファイルを見つけることができないため、迷惑だと思ったlibフォルダーは処理されないと思います。もちろんcv2.VideoCaptureは失敗します。

上記の例は、デフォルトのcondaenvの問題を修正します。他の環境の場合でも、libフォルダーをPATHに手動で追加する必要があります。だから、私はsource activateコマンドをカスタマイズしてこれを自動的に行う方法を知りたいです...

0
otterb

Conda-recipesを使用してffmpegをインストールします。

git clone https://github.com/conda/conda-recipes.git

cd conda-recipes

conda build x264

conda build ffmpeg

ここ も参照してください。

0
shahar_m

私は同じ問題を抱えていて、インターネットを調べた後、うまくいく解決策を見つけました。管理者アクセス権のあるコマンドライン:

conda install conda-build
conda install cmake
conda config --add channels menpo

次のファイルを編集します。

C:\ Program Files\Anaconda2\pkgs\cmake-3.6.3-vc9_0\info\recipe\buy.sh

次のフラグを追加します。

-DWITH_FFMPEG = 1

たとえば、私の場合:

#!/bin/bash

LDFLAGS=$LDFLAGS" -Wl,-rpath,$PREFIX/lib" \
  ./bootstrap \
             --verbose \
             --prefix="${PREFIX}" \
             --system-libs \
             --no-qt-gui \
             --no-system-libarchive \
             --no-system-jsoncpp \
             -- \
             -DWITH_FFMPEG = 1 \
             -DCMAKE_BUILD_TYPE:STRING=Release \
             -DCMAKE_FIND_ROOT_PATH="${PREFIX}"

make
make install

最後に:

conda build /conda

それは私に働いた。

一方、私は以前にopencv_ffmpegxyz.dllファイルを\ opencv\build\binから\ Program Files\Anaconda2にコピーしました。私の場合、opencv_ffmpe320_64.dll(64ビットバージョン)で、opencv_ffmpeg.dllファイルが配置されているパスにffmpegという新しい環境変数を追加しました。

よろしく。

0
omotto

ビデオライターを機能させる別の方法を見つけました。実際にImageMagikをコンピューターにインストールしてから、アニメーションパスをImageMagikをインストールした場所に設定しました。 ffmpegでも同じことができるのだろうか?

plt.rcParams["animation.convert_path"] = "C:\ProgramFiles\ImageMagick\magick.exe"
#Here I am loading a matplotlib.plot as the animation, so it could be different than for you, but the point is that by specifying the path to imagemagik I was able to write a video to a file.
anim = animation.FuncAnimation(fig, animate, frames=len(mylist), init_func=init, interval=300, blit=True)
anim.save('output.gif', dpi=80, writer='imagemagik')
0
bart cubrich