【覚書】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できたら絶対画像解析系描画系は楽なんだろうなぁ~とは思ってる。

コメント

このブログの人気の投稿

Loop Engage Plus買った話

最近のこと

フリウォの話