質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
OpenCV

OpenCV(オープンソースコンピュータービジョン)は、1999年にインテルが開発・公開したオープンソースのコンピュータビジョン向けのクロスプラットフォームライブラリです。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

1回答

4051閲覧

python opencv で動画のフレームレートを低くしたい。

kiraaa

総合スコア12

OpenCV

OpenCV(オープンソースコンピュータービジョン)は、1999年にインテルが開発・公開したオープンソースのコンピュータビジョン向けのクロスプラットフォームライブラリです。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

1クリップ

投稿2018/11/26 06:43

編集2018/11/26 07:48

前提・実現したいこと

python opencv で動画のフレームレートを低くし保存したい。
ここに質問の内容を詳しく書いてください。
現在anacondaのspyder(OpenCV3.6)にて240FPSで撮影した動画を30FPSまでフレームレートを低く(フレームを間引く)したいのですが。
フレーム補間は行えたのですが間引く方法が分かっておらず迷走しております。
お力を貸していただければ幸いです。

#ソースコード
import cv2

filepath = 'soto240.avi'
cap = cv2.VideoCapture(filepath)

while True:
# 1フレームずつ取得する。
ret, frame = cap.read()
if not ret:
break # 映像取得に失敗

frame = cv2.resize(frame, dsize=(640, 480)) cv2.imshow('Frame', frame) cv2.waitKey(1)

cap.release()
cv2.destroyAllWindows()

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

can110

2018/11/26 07:32 編集

実現したいことの詳細(30FPSで表示?ファイルに保存?)を現在のソースコードとともに追記ください(いずれにせよ単に間引けばよいと思うのですが)
guest

回答1

0

ベストアンサー

以下のように間引いてimshowすればよいかと思います。

Python

1i = 0 2while True: 3 ret, frame = cap.read() 4 # 略 5 6 if i % 8 == 0 # 240/30=8 フレーム毎に間引く 7 cv2.imshow('Frame', frame) 8 cv2.waitKey(33) # 30FPS 9 i+=1

投稿2018/11/26 07:53

can110

総合スコア38266

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kiraaa

2018/11/26 08:47

間引くことができましたありがとうございます。 出来れば表示ではなく保存が好ましいのですが
can110

2018/11/26 08:51 編集

フレーム補間した動画の保存まではできていますよね? 現在出来ている、30fpsで保存するコードを提示されるとお力になれるかもしれません。
kiraaa

2018/11/26 09:02

import cv2 filepath = 'soto240.avi' cap = cv2.VideoCapture(filepath) fourcc = cv2.VideoWriter_fourcc(*'XVID') out = cv2.VideoWriter('output30ni.avi',fourcc, 30, (1920,1080),True) while True:#1フレームずつ取得する。 ret, frame = cap.read() if not ret: break # 映像取得に失敗 if i % 8 == 0: # 240/30=8 フレーム毎に間引く cv2.imshow('Frame', frame) cv2.waitKey(33) # 30FPS i+=1 frame = cv2.resize(frame, dsize=(640, 480)) cv2.imshow('Frame', frame) cv2.waitKey(1) cap.release() cv2.destroyAllWindows() となっています。
can110

2018/11/26 09:06

パッと見、書き込む処理が書かれていないようですが… 書き込みはどのような呼出で行うのでしょうか? なお、コメント欄はインデントがなくなるので質問本文にこのコメント欄の流れ(どこまでできたか)とともに追記されると同じ疑問を持つ他の方の役にもたちますのでよろしく検討ください。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問