トップ «前の日記(2010/05/19(Wed)) 最新 次の日記(2010/05/21(Fri))» 編集
【ソース+水=麦茶色の何か】

半期 四半期 全カテゴリ

今日の一言


2010/05/20(Thu) ゴッチャリオン [長年日記]

_ [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」がエラーを吐いた・・・

[]