Python OpenCVによる動画の読み込みと保存、保存失敗の理由解決
2022-02-21 22:58:07
最新記事 https://blog.csdn.net/DumpDoctorWang/article/details/92399157 をご参照ください。
I. OpenCVのインストール
# Open a terminal and type in pip, install pip if you don't have it
pip install opencv-contrib-python
# Open the Python interactive environment and print the opencv version
import cv2
print(cv2.__version__)
II. 動画の読み込みと保存
# coding=utf8
import cv2
if __name__ == '__main__':
# Open the video
reader = cv2.VideoCapture("/home/creator/Projects/Dataset/edge/V90516-155231.mp4")
print(reader.isOpened())
# The width of the video
width = int(reader.get(cv2.CAP_PROP_FRAME_WIDTH))
# The height of the video
height = int(reader.get(cv2.CAP_PROP_FRAME_HEIGHT))
# The frame rate of the video
fps = reader.get(cv2.CAP_PROP_FPS)
# The encoding of the video
fourcc = int(reader.get(cv2.CAP_PROP_FOURCC))
# Define the video output
writer = cv2.VideoWriter(". /out.mp4", fourcc, fps, (width, height))
have_more_frame = True
while have_more_frame:
have_more_frame, frame = reader.read()
if have_more_frame:
# Show
cv2.imshow('video', frame)
# delay
cv2.waitKey(24)
# Write the new video
writer.write(frame)
reader.release()
writer.release()
前のコードを実行すると、次のようなエラーが発生することがあります。
True
Failed to load OpenH264 library: openh264-1.7.0-win64.dll
Please check environment and/or download library: https://github.com/cisco/openh264/releases
[libopenh264 @ 000000001e84abe0] Incorrect library version loaded
Could not open codec 'libopenh264': Unspecified error
Process finished with exit code 0
これは、エンコードライブラリがないためです。そのため、それが示唆するリンク先(https://github.com/cisco/openh264/releases)に行き、対応するバージョンをダウンロードしてください。 openh264の対応バージョンをダウンロードする場合は、ビット数を間違えないように注意してください。例えば、私のはPython, Windows用の64ビットなので、ダウンロードは openh264-1.7.0-win64.dll.bz2 <スパン このzipアーカイブ。ダウンロード後、pyファイルのあるディレクトリに解凍し、再度実行するとエラーになりません。
III. 動画保存失敗の理由
ほとんどの場合、エンコーディングやビデオの幅が書き込むフレームの幅と異なるために書き込みに失敗します。したがって、入力ビデオのエンコーディング(fourcc)を使用し、ビデオの幅を正しく設定するのがよいでしょう。処理後の画像のサイズがわからない場合は、画像のサイズを出力して、画像と同じサイズの動画を保存すればよい。
関連
-
undefinedAttributeError: 'dict_values' オブジェクトに 'translate' 属性がない エラーは解決されました。
-
ImportError: 名前のインポートができない imsave エラー
-
AttributeError: 'module' オブジェクトには 'SSL_ST_INIT' 属性がない ソリューション
-
python マルチスレッド操作エラー。logger "websocket "のハンドラが見つかりませんでした。
-
移動平均のPython実装
-
Python による pyserial 経由でのシリアルポートの読み取りと書き込み
-
Pythonで問題解決。TypeError: 'encoding' is an invalid keyword argument for this function.
-
Python プロンプト。TypeError: 'NoneType' オブジェクトは呼び出し可能なソリューションではありません。
-
Python error TypeError: 'type' object is not subscriptable
-
Python3+BeautifulSoupがUnicodeEncodeErrorを報告:'charmap' codec can't encode characters in position
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
Pythonです。pandasのiloc, loc, ixの違いと連携について
-
TypeError: 'numpy.ndarray' オブジェクトが呼び出し可能でないエラー処理
-
Pythonモジュールの簡単な説明(とても詳しいです!)。
-
Python ランタイムエラー, raise notImplementedError
-
ValueErrorです。変数 `x` と `y` のどちらも数値でないように見えます。
-
TypeError: 'encoding'はこの関数の無効なキーワード引数です。
-
TypeError: Json オブジェクトは str, bytes または bytearray でなければならず、'TextIOWrapper' ではありません。
-
TypeError: -: 'list' および 'list' のオペランド型が未サポート 問題解決
-
Python ネットワークリクエストのエラー "ConnectionRefusedError: [WinError 10061] ターゲットコンピュータがアクティブに拒否したため接続できません"
-
float32とfloat64の本質的な違い(ディープラーニングへの型影響とpythonの活用)。