2017-06-06 15 views
0

モバイルクライアントに動画を保存してサーバーに送信します。サーバーでは、私はフレームを保存するには、次のコードを使用します。我々は、WindowsメディアプレーヤーやiTunesでビデオを再生する場合>opencv - 動画はうまく見えますが、フレームは90度回転しています

import skvideo.io 
import cv2 

haar = 
'/home/ubuntu/opencv/data/haarcascades/haarcascade_frontalface_alt.xml' 
face_cascade = cv2.CascadeClassifier(haar) 

ret = True 

video = 'my_video.mov' 
i = 0 
while ret == True: 
    cap = skvideo.io.VideoCapture(video) 
    ret, frame = cap.read() 
    cv2.imwrite('frame_'+str(i)+'.jpg',frame) 
    i+=1 

、それはよさそうです。私。プレイヤーはそれを方向付ける方法を知っています。

skvideo.ioはそれを知らず、保存したフレームは反時計回りに90度回転しています。

skvideoが正しい向きを知っているビデオファイル(.mov)ファイルに情報を埋め込むにはどうすればよいですか?

+0

任意の理由は? – ZdaR

答えて

1

それはあなたがpropIdのこと、それ店舗で見ることができるようVideoCapture()とビデオファイルのローテーションメタデータを記録しませんOpenCVのように見えます。

scikit-videoの場合はわかりません。ローテーションを引き出す可能性のあるffprobeというメタデータプーラーがあるようです。出力を呼び出して表示する方法の例は、hereを参照してください。これはメタデータの大量のリスト---回転なし---を示していますが、それは設定されていないか、回転メタデータを持たないムービータイプのためかもしれません。

もう1つの方法は、ffmpegから直接メタデータを読み取ることです。 ffmpegを使用してビデオからローテーションメタデータを抽出するために少しpythonというコードを書いたold StackOverflow answerが見つかりました。

+0

お金の上に右!ありがとう –

+0

@AlejandroSimkievichあなたが 'scikit-video'または' ffmpeg'で正確な解決策を見つけたら、元の質問を編集してこの質問の他の人が簡単に動くようにしてください! –

+0

良い点は、完了 –

1

skvideoに不具合があり、利用可能なメタデータを読み込めませんでした。モバイルで撮影された動画は回転されますが、メタデータにはそのようなパラメータが含まれます。 skvideoチームは修正案を提出し、現在のskvideoバージョン1.1.7はモバイルからメタデータを読み込みます。これは、ビデオを評価する必要があることを示しています。

1)を使用する新しいskvideoバージョン、1.1.7あなたのすべてのフレームを読み取るために、次のコードを使用することができる)https://github.com/scikit-video/scikit-video

2でクローニングすることができる。skvideo.io.vread、ファイルを回転させますビデオ、最も可能性の高いメタデータは、それがポートレートモードで撮影された場合、自動的に映像を回転します

import skvideo.io 
videogen = skvideo.io.vread(f.name) 

を読み込まれます。

3)skvideoレポ上の問題を作成し、さらに参考のために見てみましょう: `cv2.VideoCapture`のAPI経由` skvideo.io`を使用するためのhttps://github.com/scikit-video/scikit-video/issues/40

+0

ソリューションのための偉大な仕事を掘る! –

+0

ありがとう!あなたが私の解決策をアップヴォートするならば、私は怒らないでしょう! :) –

関連する問題