今日の一言
2010/05/20(Thu) ゴッチャリオン [長年日記] 1:00現在弱いにわか雨 21℃
_ [OpenCV][Linux][Ubuntu][Debian][FC][研究関係][雑記] OpenCV + IEEE1394カメラ + ffmpeg インストールまとめ( + mplayer)
' とりあえず、以前までのffmpeg関係の日記は無視してください!間違い多数故 '
ffmppeg
まず、ffmpegに最低限必要となるものを入れておく。
$ sudo apt-get install quilt libogg-dev libvorbis-dev liba52-dev libdts-dev libsdl1.2-dev libimlib2-dev texi2html libraw1394-dev libdc1394-13-dev libtheora-dev libgsm1-dev
全部入ったら、ココ(http://ffmpeg.org/download.html)からffmpegのソースを取ってくる。
$ apt-get install subversion $ svn checkout svn://svn.ffmpeg.org/ffmpeg/trunk ffmpeg
で、いくつかオプションをつけて
$ ./configure --enable-shared --enable-swscale --enable-gpl
し、
$ make # make install # sudo ldconfig
でインストール完了!
これでlibavcodec等が /usr/local/lib にインストールされたはず。
もし/usr/local/lib にライブラリパスが通っていない場合は、「/etc/ld.so.conf」もしくは「/etc/ld.so.conf.d/libc.conf 」に以下の行を追加する。
/usr/local/lib
また、ヘッダファイルは「/usr/local/include/lib*」あたりに生成されると思うが、OpenCV(1.1)の場合、「ffmpeg/*.h」を探してしまって認識してくれない可能性がある。
その時は、OpenCVのMakefileを修正する。
*シンボリックリンクで、
$ cd /usr/local/include # mkdir ffmpeg # cd ffmpeg # ln -s ../lib*/*.h ./
とすると、ffmpeg関係のヘッダファイルが複数見つかってエラーを吐いたので。
IEEE1394カメラ
まず、ココ(http://damien.douxchamps.net/ieee1394/coriander/)からソースをDLし、解凍して
$ ./configure
いろいろ足りないといわれるので、適宜、必要と言われたものをapt-getで入れていく。
$ sudo apt-get install libgnomeui-dev $ sudo apt-get install libxv-dev $ sudo apt-get install libraw1394-dev $ sudo apt-get install libdc1394-13-dev $ sudo apt-get install libsdl-dev $ sudo apt-get install ftplib-dev
エラーが完全になくなったのを確認し、
$ make $ sudo make install
これでインストールは完了!実際にIEEE1394カメラを接続し、
$ ls /dev/video1394*
として、それっぽいのが出来ていること確認する。もし出来ていれば
# coriander
とすれば、IEEE1394カメラが動くはず。(管理者権限が必要?)
*もしcorianderでもうごかないなら、もう一度configureし、確認する。
<注1>
libdc1394は古い方(1.3)を入れること!
そうしないとopencv(1.x)で認識できないっぽい。
<注2>
IEEE1394が/dev/video1394-0になってしまっているときは、mvでこれを/dev/video1394/0に移すべし!
*これもopencv(1.x)対策。
*なぜ「video1394-0」になるのかは、自分でググってください。
OpenCV
ココ(http://sourceforge.net/projects/opencvlibrary/files/)からソースをDLして、
1.xの場合
$ tar zxvf opencv-1****.tar.gz $ cd opencv-1***** $ ./configure $ make # make install # ldconfig
2.xの場合
$ tar zxvf opencv-2****.tar.gz $ cd opencv-2***** $ cmake . $ make # make install # ldconfig
とする。
この際、「./configure」もしくは「cmake .」としたときに、「ieee1394」と「ffmpeg」が有効になっていることを確認すること!
この時点で正しく設定できていない場合、後で再インストールするはめになります。
IEEE1394カメラを試す
サンプルソース(aptでdocを入れた場合、/usr/share/doc/opencv-doc/examples/cに入っている)を
$ sh build_all.sh
でコンパイルし、「lkdemo」を'管理者権限で'起動させる。
これでIEEE1394カメラからキャプチャできることが確認できる。
録画(ビデオアウトプット)を試す
とりあえずここ(http://opencv.jp/sample/video_io.html)から「動画としてファイルへ書き出す」というサンプルコードを取ってきて、こんな感じ
$ g++ -Wall -O2 `pkg-config --cflags opencv` `pkg-config --libs opencv` -o 1394test 1394test.cpp
でコンパイルする。
出来上がった実行ファイルを'管理者権限で'起動し、エラー無しにcap.aviが生成されることを確認する。(「ctl+c」で終了させてもちゃんと生成されるっぽい?)
*以下、解説から引用。
コーデックの指定に,CV_FOURCC('X','V','I','D')(XVID)を用いているが,リファレンス マニュアルにあるように,CV_FOURCC('M','J','P','G')(モーションJPEG)や CV_FOURCC('P','I','M','1')(MPEG-1)を利用することもできる.非圧縮での保存を希望する場合は,CV_FOURCC('D','I','B',' ')を指定すればよい.
mplayerをソースからインストール
ココ(http://robotics.naist.jp/~akihiro-i/dialy/?date=20100519#p01)でも書いたが、どうもコーデック関係が怪しい。
なので、コーデック内蔵の「mplayer」をソースからコンパイルし、インストールする。
ここ(http://www.mplayerhq.hu/design7/dload.html)からソースをDLし、解凍して
$ ./configure $ make # make install
するだけ!
実行も
$ mplayer hoge.avi
とかで簡単に出来る。
まあ、CUIでしか起動できないっぽいが、とりあえず使えるだろう。
*aptで入れると「libav*」が大量にインストールされてしまい、競合が起きて「ffmpeg」がエラーを吐いた・・・