2017-09-05 18 views
0

すでに読んでいただきありがとうございます。私はこれを1日働かせようとしていましたが、溶液。OpenCV(3.3.0)はビデオ付きのVideoCaptureで失敗しますが、ウェブカメラでも動作します。[OS X]

私はこれを稼働させようとしています。object tracker私は私のウェブカメラからの映像を(使用する場合:。python object-tracker-single.py -d 0予想通り、すべてが

作品しかし、すぐに私はビデオファイルを使用しようとしているとして、(私は異なるフォーマットを試してみた: .mp4.mkv & .avi I File not found -Errorがあるかどうかを調べるために、関数に無効なパスを渡してエラーが出力されました。これは私が次のときに出力されませんでした。

homebrewの後にthis articleをインストールしてコンパイルしましたが、私が使用しているファイルは有効で、破損していません。公式の出典からOpenCV。これはCMakeが吐き出すCMakeCache.txtです。私が最初にコンパイルした後、私はopencv_contribを追加しました。私は実際に必要と思っていましたが、それは問題を解決しませんでした。 retvalFalseに等しく、imageNoneに等しく、マークされたラインで

# Create the VideoCapture object 
cam = cv2.VideoCapture(source) 

# If Camera Device is not opened, exit the program 
if not cam.isOpened(): 
    print "Video device or file couldn't be opened" 
    exit() 

print "Press key `p` to pause the video to start tracking" 
while True: 
    # Retrieve an image and Display it. 
    retval, img = cam.read() #<-- this returns false when trying to read a video 
    if not retval: 
     print "Cannot capture frame device" 
     exit() 

この

は、私は問題を抱えているコードです。 何らかの形でこの動作をデバッグできたら、すでに助けてもらえますが、これを行う方法が見つかりませんでした。

は、私は多くのWindowsユーザーがffmpegサポートが欠落して問題を持っていたことが分かったが、私は(OpenCVの関連ではない)以前のプロジェクトでffmpegffmpegが発見されたことをCMakeCache.txtレポートやコンパイルを使用するので、それは、私にとってはそうではありません成功した。

また、Video device or file couldn't be openedまたは特定の問題が発生したビデオファイルの完全修飾ファイル名を使用してみました。

この問題がどのように完全に解決できるか分かっている場合は、解決方法に関するアイデアを持っているか、この動作を適切にデバッグする方法を教えてください。

ありがとうございました!

-

システム:のMacBook Pro(MacOSのシエラ10.12.6

OpenCVのバージョン:3.3.0

DLIBバージョン(不要芋、ちょっと):19.4.0

編集2 の出力cmake -DOPENCV_EXTRA_MODULES_PATH=../opencv_contrib-master/modules ../ >> result.txtpastebin

+0

コードをハードコードされたパスでテストしましたか?例えば、cam = cv2.VideoCapture( "/ home/video.mp4") '? – zindarod

+0

@Zindarod同じ動作、相違なし – njoye

+0

OpenCVビルドフォルダに移動し、 'cmake .. >> result.txt'を実行して、ここにファイルを投稿してください。 – zindarod

答えて

0

scikit-videoとリンクされたskvideo.io.FFmpegReader()機能を使用して回避策を見つけました。それによって、フレームごとにテストしたすべてのビデオを読むことができました。

これは私の元の質問にコードを置き換えるコードです:

reader = skvideo.io.FFmpegReader("/Users/timomueller/Desktop/test_video_carcounting.mp4", inputdict=inputparameters, outputdict=outputparameters); 

print "Press key `p` to pause the video to start tracking" 
for img in reader.nextFrame(): 
    #img contains the frame - the for loop runs until there is 
    #no frame available anymore 

あなたは、私がそうであるように、同じ問題に直面している場合は、私はscikit-videoが良い回避策であることを考えると、私は注目します私の実際の問題に取り組むのではなく、今からOpenCVを修正します。

pipからのインストールは簡単です。単純にsudo pip install sk-videoを入力し、コマンドが終了するまで待ちます。その後、あなたはimport skvideo.ioでき、すべてうまくいくはずです!

この回避策で唯一の問題は、imgが色を失ったか、色空間、ピクセル形式などの設定が間違っているように見えることです。これは重要ではないため、単にそれを無視し、おそらく後でそれに取り組むでしょう。 (修正が見つかった場合は、この回答を更新します)。正しい色が必要な人は、inputdictoutputdictskvideo.io.FFmpegReader(file, inputdict, outputdict))に関するドキュメントをご覧ください。同様にFFmpegvideo filtersも同様です。色付きの色をoutputdictの適切なピクセル形式設定で修正することは可能です。

しかし、色合いの問題はあなたに影響を与えないかもしれません。その場合、私はこれが助けてくれることを願っています。

問題の実際の解決策が見つかった場合は、必ず回答を追加してください。

0

私はOpenCV 3.3.0で同じ問題がありました。 Ubuntu 14.04で。

理由は、cv2.VideoCaptureが失敗した理由は、OpenCVのインストールが間違っているためです。

インストールの公式の方法に従ってください。http://docs.opencv.org/trunk/d7/d9f/tutorial_linux_install.html

私は明らかに動作していない、PIPを使用してインストールしていました。 https://hub.docker.com/r/victorhcm/opencv/

完全に働いた:

私はちょうどドッキングウィンドウの画像を引っ張ってしまいました。

関連する問題