debianでWebカメラを使って撮影をしたかった
ThinkPad X61にWebカメラを繋げてみたのでRubyで使える様にチャレンジした内容のメモです。
環境はdebianの7.6で実行して失敗しています。
ググってもビルドの記事ばっかりだったので、apt-getでのインストールにチャレンジしましたが、wheezy-backportsではOpenCV2.3のパッケージが入り、ruby-opencvのgemに必要なopencv_photoが入っていないためruby-opencvはインストールできませんでした。
取りあえず作業メモとして残しておきます。
OpenCVをインストールするためにパッケージを探します。
# apt-cache search opencv libcv-dev - Translation package for libcv-dev libcv2.3 - computer vision library - libcv* translation package libcvaux-dev - Translation package for libcvaux-dev libcvaux2.3 - computer vision library - libcvaux translation package libhighgui-dev - Translation package for libhighgui-dev libhighgui2.3 - computer vision library - libhighgui translation package libopencv-calib3d-dev - development files for libopencv-calib3d libopencv-calib3d2.3 - computer vision Camera Calibration library libopencv-contrib-dev - development files for libopencv-contrib libopencv-contrib2.3 - computer vision contrib library libopencv-core-dev - development files for libopencv-core libopencv-core2.3 - computer vision core library libopencv-dev - development files for opencv libopencv-features2d-dev - development files for libopencv-features2d libopencv-features2d2.3 - computer vision Feature Detection and Descriptor Extraction library libopencv-flann-dev - development files for libopencv-flann libopencv-flann2.3 - computer vision Clustering and Search in Multi-Dimensional spaces library libopencv-gpu-dev - development files for libopencv-gpu libopencv-gpu2.3 - computer vision GPU Processing library libopencv-highgui-dev - development files for libopencv-highgui libopencv-highgui2.3 - computer vision High-level GUI and Media I/O library libopencv-imgproc-dev - development files for libopencv-imgproc libopencv-imgproc2.3 - computer vision Image Processing library libopencv-legacy-dev - development files for libopencv-legacy libopencv-legacy2.3 - computer vision legacy library libopencv-ml-dev - development files for libopencv-ml libopencv-ml2.3 - computer vision Machine Learning library libopencv-objdetect-dev - development files for libopencv-objdetect libopencv-objdetect2.3 - computer vision Object Detection library libopencv-video-dev - development files for libopencv-video libopencv-video2.3 - computer vision Video analysis library opencv-doc - OpenCV documentation and examples python-opencv - Python bindings for the computer vision library
libopencv-core2.3っぽいかなと思ったので。
# apt-get install libopencv-core2.3
続いてRuby用のラッパーをインストールします。
# gem install ruby-opencv Building native extensions. This could take a while... ERROR: Error installing ruby-opencv: ERROR: Failed to build gem native extension. /usr/bin/ruby1.9.1 extconf.rb /usr/lib/ruby/1.9.1/rubygems/custom_require.rb:36:in `require': cannot load such file -- mkmf (LoadError) from /usr/lib/ruby/1.9.1/rubygems/custom_require.rb:36:in `require' from extconf.rb:12:in `' Gem files will remain installed in /var/lib/gems/1.9.1/gems/ruby-opencv-0.0.13 for inspection. Results logged to /var/lib/gems/1.9.1/gems/ruby-opencv-0.0.13/ext/opencv/gem_make.out
mkmfがないと言われたので探します。
# apt-cache search mkmf ruby-dev - Header files for compiling extension modules for Ruby (default version) ruby-mkrf - Ruby library generating Rakefiles to build C extensions to Ruby ruby1.8-dev - Header files for compiling extension modules for the Ruby 1.8 ruby1.9.1-dev - Header files for compiling extension modules for the Ruby 1.9.1
ruby-devに入ってるっぽい雰囲気ですね。
# apt-get install ruby-dev
再チャレンジ
# gem install ruby-opencv
Building native extensions. This could take a while...
ERROR: Error installing ruby-opencv:
ERROR: Failed to build gem native extension.
/usr/bin/ruby1.9.1 extconf.rb
>> Check the required libraries...
checking for main() in -lstdc++... no
checking for main() in -lopencv_calib3d... no
*** extconf.rb failed ***
Could not create Makefile due to some reason, probably lack of
necessary libraries and/or headers. Check the mkmf.log file for more
details. You may need configuration options.
Provided configuration options:
--with-opt-dir
--without-opt-dir
--with-opt-include
--without-opt-include=${opt-dir}/include
--with-opt-lib
--without-opt-lib=${opt-dir}/lib
--with-make-prog
--without-make-prog
--srcdir=.
--curdir
--ruby=/usr/bin/ruby1.9.1
--with-opencv-dir
--without-opencv-dir
--with-opencv-include
--without-opencv-include=${opencv-dir}/include
--with-opencv-lib
--without-opencv-lib=${opencv-dir}/lib
--with-libxml2-dir
--without-libxml2-dir
--with-libxml2-include
--without-libxml2-include=${libxml2-dir}/include
--with-libxml2-lib
--without-libxml2-lib=${libxml2-dir}/lib
--with-stdc++lib
--without-stdc++lib
--with-opencv_calib3dlib
--without-opencv_calib3dlib
extconf.rb:58:in `block in <main>': opencv_calib3d not found. (RuntimeError)
from extconf.rb:58:in `each'
from extconf.rb:58:in `<main>'
Gem files will remain installed in /var/lib/gems/1.9.1/gems/ruby-opencv-0.0.13 for inspection.
Results logged to /var/lib/gems/1.9.1/gems/ruby-opencv-0.0.13/ext/opencv/gem_make.outsearch opencvでlibopencv-calib3d2.3もあったので入れてみる。
# apt-get install libopencv-calib3d2.3
再チャレンジ。
# gem install ruby-opencv
同じエラーでダメでした。うーん。ディベロップパッケージも入れないとだめなのかなー。
# apt-get install libopencv-calib3d-dev
再々チャレンジ
# gem install ruby-opencv
Building native extensions. This could take a while...
ERROR: Error installing ruby-opencv:
ERROR: Failed to build gem native extension.
/usr/bin/ruby1.9.1 extconf.rb
>> Check the required libraries...
checking for main() in -lstdc++... yes
checking for main() in -lopencv_calib3d... yes
checking for main() in -lopencv_contrib... no
*** extconf.rb failed ***
Could not create Makefile due to some reason, probably lack of
necessary libraries and/or headers. Check the mkmf.log file for more
details. You may need configuration options.
Provided configuration options:
--with-opt-dir
--without-opt-dir
--with-opt-include
--without-opt-include=${opt-dir}/include
--with-opt-lib
--without-opt-lib=${opt-dir}/lib
--with-make-prog
--without-make-prog
--srcdir=.
--curdir
--ruby=/usr/bin/ruby1.9.1
--with-opencv-dir
--without-opencv-dir
--with-opencv-include
--without-opencv-include=${opencv-dir}/include
--with-opencv-lib
--without-opencv-lib=${opencv-dir}/lib
--with-libxml2-dir
--without-libxml2-dir
--with-libxml2-include
--without-libxml2-include=${libxml2-dir}/include
--with-libxml2-lib
--without-libxml2-lib=${libxml2-dir}/lib
--with-stdc++lib
--without-stdc++lib
--with-opencv_calib3dlib
--without-opencv_calib3dlib
--with-opencv_contriblib
--without-opencv_contriblib
extconf.rb:58:in `block in <main>': opencv_contrib not found. (RuntimeError)
from extconf.rb:58:in `each'
from extconf.rb:58:in `<main>'
Gem files will remain installed in /var/lib/gems/1.9.1/gems/ruby-opencv-0.0.13 for inspection.
Results logged to /var/lib/gems/1.9.1/gems/ruby-opencv-0.0.13/ext/opencv/gem_make.outエラーがちょっと変わった。lopencv_contribがないらしい。
これも似た名前のパッケージがあったので突っ込んでみる。
# apt-get install libopencv-contrib2.3
再々々チャレンジ
# gem install ruby-opencv
同じエラーでだめ。libopencv-contrib-devも入れないとだめか。
# apt-get install libopencv-contrib-dev
再々々々チャレンジ
# gem install ruby-opencv
Building native extensions. This could take a while...
ERROR: Error installing ruby-opencv:
ERROR: Failed to build gem native extension.
/usr/bin/ruby1.9.1 extconf.rb
>> Check the required libraries...
checking for main() in -lstdc++... yes
checking for main() in -lopencv_calib3d... yes
checking for main() in -lopencv_contrib... yes
checking for main() in -lopencv_core... yes
checking for main() in -lopencv_features2d... yes
checking for main() in -lopencv_flann... yes
checking for main() in -lopencv_highgui... yes
checking for main() in -lopencv_imgproc... yes
checking for main() in -lopencv_legacy... no
*** extconf.rb failed ***
Could not create Makefile due to some reason, probably lack of
necessary libraries and/or headers. Check the mkmf.log file for more
details. You may need configuration options.
Provided configuration options:
--with-opt-dir
--without-opt-dir
--with-opt-include
--without-opt-include=${opt-dir}/include
--with-opt-lib
--without-opt-lib=${opt-dir}/lib
--with-make-prog
--without-make-prog
--srcdir=
--curdir
--ruby=/usr/bin/ruby1.9.1
--with-opencv-dir
--without-opencv-dir
--with-opencv-include
--without-opencv-include=${opencv-dir}/include
--with-opencv-lib
--without-opencv-lib=${opencv-dir}/lib
--with-libxml2-dir
--without-libxml2-dir
--with-libxml2-include
--without-libxml2-include=${libxml2-dir}/include
--with-libxml2-lib
--without-libxml2-lib=${libxml2-dir}/lib
--with-stdc++lib
--without-stdc++lib
--with-opencv_calib3dlib
--without-opencv_calib3dlib
--with-opencv_contriblib
--without-opencv_contriblib
--with-opencv_corelib
--without-opencv_corelib
--with-opencv_features2dlib
--without-opencv_features2dlib
--with-opencv_flannlib
--without-opencv_flannlib
--with-opencv_highguilib
--without-opencv_highguilib
--with-opencv_imgproclib
--without-opencv_imgproclib
--with-opencv_legacylib
--without-opencv_legacylib
extconf.rb:58:in `block in <main>': opencv_legacy not found. (RuntimeError)
from extconf.rb:58:in `each'
from extconf.rb:58:in `<main>'
Gem files will remain installed in /var/lib/gems/1.9.1/gems/ruby-opencv-0.0.13 for inspection.
Results logged to /var/lib/gems/1.9.1/gems/ruby-opencv-0.0.13/ext/opencv/gem_make.outlopencv_legacyがないとな。
libopencv-legacy2.3を入れよう、今までのパターンからするとlibopencv-legacy-devも必要そうだから入れておく。
# apt-get install libopencv-legacy2.3 libopencv-legacy-dev
再々々々々チャレンジ
# gem install ruby-opencv
Building native extensions. This could take a while...
ERROR: Error installing ruby-opencv:
ERROR: Failed to build gem native extension.
/usr/bin/ruby1.9.1 extconf.rb
>> Check the required libraries...
checking for main() in -lstdc++... yes
checking for main() in -lopencv_calib3d... yes
checking for main() in -lopencv_contrib... yes
checking for main() in -lopencv_core... yes
checking for main() in -lopencv_features2d... yes
checking for main() in -lopencv_flann... yes
checking for main() in -lopencv_highgui... yes
checking for main() in -lopencv_imgproc... yes
checking for main() in -lopencv_legacy... yes
checking for main() in -lopencv_ml... no
*** extconf.rb failed ***
Could not create Makefile due to some reason, probably lack of
necessary libraries and/or headers. Check the mkmf.log file for more
details. You may need configuration options.
Provided configuration options:
--with-opt-dir
--without-opt-dir
--with-opt-include
--without-opt-include=${opt-dir}/include
--with-opt-lib
--without-opt-lib=${opt-dir}/lib
--with-make-prog
--without-make-prog
--srcdir=.
--curdir
--ruby=/usr/bin/ruby1.9.1
--with-opencv-dir
--without-opencv-dir
--with-opencv-include
--without-opencv-include=${opencv-dir}/include
--with-opencv-lib
--without-opencv-lib=${opencv-dir}/lib
--with-libxml2-dir
--without-libxml2-dir
--with-libxml2-include
--without-libxml2-include=${libxml2-dir}/include
--with-libxml2-lib
--without-libxml2-lib=${libxml2-dir}/lib
--with-stdc++lib
--without-stdc++lib
--with-opencv_calib3dlib
--without-opencv_calib3dlib
--with-opencv_contriblib
--without-opencv_contriblib
--with-opencv_corelib
--without-opencv_corelib
--with-opencv_features2dlib
--without-opencv_features2dlib
--with-opencv_flannlib
--without-opencv_flannlib
--with-opencv_highguilib
--without-opencv_highguilib
--with-opencv_imgproclib
--without-opencv_imgproclib
--with-opencv_legacylib
--without-opencv_legacylib
--with-opencv_mllib
--without-opencv_mllib
extconf.rb:58:in `block in <main>': opencv_ml not found. (RuntimeError)
from extconf.rb:58:in `each'
from extconf.rb:58:in `<main>'
Gem files will remain installed in /var/lib/gems/1.9.1/gems/ruby-opencv-0.0.13 for inspection.
Results logged to /var/lib/gems/1.9.1/gems/ruby-opencv-0.0.13/ext/opencv/gem_make.outご注文はlopencv_mlですか?
# apt-get install libopencv-ml2.3 libopencv-ml-dev
再々々々々々チャレンジ
# gem install ruby-opencv
Building native extensions. This could take a while...
ERROR: Error installing ruby-opencv:
ERROR: Failed to build gem native extension.
/usr/bin/ruby1.9.1 extconf.rb
>> Check the required libraries...
checking for main() in -lstdc++... yes
checking for main() in -lopencv_calib3d... yes
checking for main() in -lopencv_contrib... yes
checking for main() in -lopencv_core... yes
checking for main() in -lopencv_features2d... yes
checking for main() in -lopencv_flann... yes
checking for main() in -lopencv_highgui... yes
checking for main() in -lopencv_imgproc... yes
checking for main() in -lopencv_legacy... yes
checking for main() in -lopencv_ml... yes
checking for main() in -lopencv_objdetect... no
*** extconf.rb failed ***
Could not create Makefile due to some reason, probably lack of
necessary libraries and/or headers. Check the mkmf.log file for more
details. You may need configuration options.
Provided configuration options:
--with-opt-dir
--without-opt-dir
--with-opt-include
--without-opt-include=${opt-dir}/include
--with-opt-lib
--without-opt-lib=${opt-dir}/lib
--with-make-prog
--without-make-prog
--srcdir=.
--curdir
--ruby=/usr/bin/ruby1.9.1
--with-opencv-dir
--without-opencv-dir
--with-opencv-include
--without-opencv-include=${opencv-dir}/include
--with-opencv-lib
--without-opencv-lib=${opencv-dir}/lib
--with-libxml2-dir
--without-libxml2-dir
--with-libxml2-include
--without-libxml2-include=${libxml2-dir}/include
--with-libxml2-lib
--without-libxml2-lib=${libxml2-dir}/lib
--with-stdc++lib
--without-stdc++lib
--with-opencv_calib3dlib
--without-opencv_calib3dlib
--with-opencv_contriblib
--without-opencv_contriblib
--with-opencv_corelib
--without-opencv_corelib
--with-opencv_features2dlib
--without-opencv_features2dlib
--with-opencv_flannlib
--without-opencv_flannlib
--with-opencv_highguilib
--without-opencv_highguilib
--with-opencv_imgproclib
--without-opencv_imgproclib
--with-opencv_legacylib
--without-opencv_legacylib
--with-opencv_mllib
--without-opencv_mllib
--with-opencv_objdetectlib
--without-opencv_objdetectlib
extconf.rb:58:in `block in <main>': opencv_objdetect not found. (RuntimeError)
from extconf.rb:58:in `each'
from extconf.rb:58:in `<main>'
Gem files will remain installed in /var/lib/gems/1.9.1/gems/ruby-opencv-0.0.13 for inspection.
Results logged to /var/lib/gems/1.9.1/gems/ruby-opencv-0.0.13/ext/opencv/gem_make.outlopencv_objdetectはいりまーす。
# apt-get install libopencv-objdetect2.3 libopencv-objdetect-dev
再々々々々々々チャレンジ
# gem install ruby-opencv
Building native extensions. This could take a while...
ERROR: Error installing ruby-opencv:
ERROR: Failed to build gem native extension.
/usr/bin/ruby1.9.1 extconf.rb
>> Check the required libraries...
checking for main() in -lstdc++... yes
checking for main() in -lopencv_calib3d... yes
checking for main() in -lopencv_contrib... yes
checking for main() in -lopencv_core... yes
checking for main() in -lopencv_features2d... yes
checking for main() in -lopencv_flann... yes
checking for main() in -lopencv_highgui... yes
checking for main() in -lopencv_imgproc... yes
checking for main() in -lopencv_legacy... yes
checking for main() in -lopencv_ml... yes
checking for main() in -lopencv_objdetect... yes
checking for main() in -lopencv_video... yes
checking for main() in -lopencv_photo... no
*** extconf.rb failed ***
Could not create Makefile due to some reason, probably lack of
necessary libraries and/or headers. Check the mkmf.log file for more
details. You may need configuration options.
Provided configuration options:
--with-opt-dir
--without-opt-dir
--with-opt-include
--without-opt-include=${opt-dir}/include
--with-opt-lib
--without-opt-lib=${opt-dir}/lib
--with-make-prog
--without-make-prog
--srcdir=.
--curdir
--ruby=/usr/bin/ruby1.9.1
--with-opencv-dir
--without-opencv-dir
--with-opencv-include
--without-opencv-include=${opencv-dir}/include
--with-opencv-lib
--without-opencv-lib=${opencv-dir}/lib
--with-libxml2-dir
--without-libxml2-dir
--with-libxml2-include
--without-libxml2-include=${libxml2-dir}/include
--with-libxml2-lib
--without-libxml2-lib=${libxml2-dir}/lib
--with-stdc++lib
--without-stdc++lib
--with-opencv_calib3dlib
--without-opencv_calib3dlib
--with-opencv_contriblib
--without-opencv_contriblib
--with-opencv_corelib
--without-opencv_corelib
--with-opencv_features2dlib
--without-opencv_features2dlib
--with-opencv_flannlib
--without-opencv_flannlib
--with-opencv_highguilib
--without-opencv_highguilib
--with-opencv_imgproclib
--without-opencv_imgproclib
--with-opencv_legacylib
--without-opencv_legacylib
--with-opencv_mllib
--without-opencv_mllib
--with-opencv_objdetectlib
--without-opencv_objdetectlib
--with-opencv_videolib
--without-opencv_videolib
--with-opencv_photolib
--without-opencv_photolib
extconf.rb:58:in `block in <main>': opencv_photo not found. (RuntimeError)
from extconf.rb:58:in `each'
from extconf.rb:58:in `<main>'
Gem files will remain installed in /var/lib/gems/1.9.1/gems/ruby-opencv-0.0.13 for inspection.
Results logged to /var/lib/gems/1.9.1/gems/ruby-opencv-0.0.13/ext/opencv/gem_make.outlopencv_photoだな…
…
発展の激しい「computational photography」分野のアルゴリズムをサポートするためのopencv_photoモジュールを追加
【ニュース】OpenCV2.4がリリース | DERiVE コンピュータビジョン ブログ & メルマガ
なるほど、なんでみんなソースからビルドしてるのか、薄皮を剥ぐように少しずつ真実が見えてきた。
aptに登録されている2.3系のパッケージではopencv_photoが使えないからソースから2.4以降をビルドしないといけなかったのね。
後始末として、インストールした各種パッケージをアンインストールします。
メモ残して置いて良かった…。
# apt-get remove ruby-dev libopencv-core2.3 ruby-dev libopencv-calib3d2.3 libopencv-calib3d-dev libopencv-contrib2.3 libopencv-contrib-dev libopencv-legacy2.3 libopencv-legacy-dev libopencv-ml2.3 libopencv-ml-dev libopencv-objdetect2.3 libopencv-objdetect-dev --purge # apt-get autoremove --purge