【覚書】OpenCVSharpのVideoWriter使うのに手間取った話
気分が絶不調なのでたまには違うことをする。
※存在ふわふわなんちゃってたまにコード書く人なので用語間違ってたりします。あしからず。
OpenCVは、なんか動画作ったり、画像なんかしたり、解析したり…そこらへんに使う便利なやつ。
んで、OpenCVを使ってmp4ファイルを書き出そうと思った。
VisualStudioでC#にて、OpenCVを使うために「OpenCVSharp4.Windows」というNugetパッケージがあり、それを入れてやってみたところ、AVIファイル以外で書き出せなかった。(2023年5月19日現在:version4.7.0.20230115)
理由としては、ビルドした際にdllフォルダに入った「opencv_videoio_ffmpeg455」というdllファイルではmp4書き出せないから。バージョンが古いっぽい。
なので、最新のdllファイルをビルド後のdllフォルダ内の「x64」と「x86」に入れる。
dllファイル自体はNugetを入れた段階で、
「プログラムフォルダ\packages\OpenCvSharp4.runtime.win.4.7.0.20230115\runtimes\win-x86\native\opencv_videoio_ffmpeg470.dll」
と
「プログラムフォルダ\packages\OpenCvSharp4.runtime.win.4.7.0.20230115\runtimes\win-x64\native\opencv_videoio_ffmpeg470_64.dll」
に入っているので、ビルドした後のdllフォルダの中にそれぞれ入れればOK。
デフォルトで「opencv_videoio_ffmpeg455」ってのが入ってるけど、消さなくてもmp4書き出せた。
以上。
アプデでもしかしたら直るかもしれないし、そもそものやり方が間違っているのかもしれないが、chatGPTに聞きまくったけど知らぬと言われ、ググってやっとこさ見つけた知識なのでメモって共有しておく。
…ちなみに、「opencv_videoio_ffmpeg455_64.dllって何ですか?」とchatGPT4に聞いたところ、
"opencv_videoio_ffmpeg455_64.dll"はOpenCV(Open Source Computer Vision Library)の一部です。OpenCVはコンピュータビジョンやマシンラーニングのアプリケーションを開発するためのオープンソースライブラリで、画像処理、ビデオキャプチャ、物体認識などの機能を提供しています。
この特定のDLL(動的リンクライブラリ)は、OpenCVがビデオファイルの読み書きを行う際に、FFmpegライブラリを使用するためのものです。FFmpegは強力なビデオおよびオーディオ変換ライブラリで、多くの異なるファイル形式をサポートしています。"opencv_videoio_ffmpeg455_64.dll"は、64ビットシステム用のバージョンで、455はOpenCVのバージョンを示しています。
したがって、あなたがこのDLLファイルを見つけた場合、それはおそらくOpenCVがシステム上で動作するために必要なもので、ビデオファイルの読み書きを行う能力を提供しています。
だと。へぇ…どこまであってるかわからんが、勉強になりました。
C#じゃなくてPythonを覚えればいいのかもしれんけど、Python覚えるほどの体力が今ない…が、Pythonできたら絶対画像解析系描画系は楽なんだろうなぁ~とは思ってる。
コメント
コメントを投稿