OpenCV野良ビルド時にCMakeが指定したPythonのライブラリをうまく見つけてくれない時は

OpenCVをPythonサポート込みでビルドしたいことがあります。
Python側へインタフェースを露出するためのヘッダなどが必要なので、いくつかのPython関連パッケージを入れれば、あとはシンプルにCMakeを実行すればよいことがほとんどです。
(そのやり方はネットにたくさんまとまっているので他をご参照ください)

% sudo apt-get install python2.7-dev python3.4-dev #などなど。
% cd /path/to/opencv/source/root
% mkdir build; cd build
% cmake -DBUILD_opencv_python2=ON -DBUILD_opencv_python3=ON ..

一方で、rootがないなどの状況でpython2.7-devなどのパッケージがシステムにない場合は、例えばpyenvを使って一時的にpythonをユーザ環境に入れそのパスを参照させることで、Python対応こみでビルドすることが可能です。
(ビルドがおわったら一時的に入れたPython環境は消してOKです)

% pyenv install miniconda2-latest
% pyenv install miniconda3-latest
% cmake -DCMAKE_BUILD_TYPE=RELEASE -DCMAKE_INSTALL_PREFIX=$HOME \
        -DBUILD_opencv_python2=ON \
        -DPYTHON2_EXECUTABLE=`pyenv local miniconda2-latest; pyenv which python` \
        -DPYTHON2_INCLUDE_DIR=`pyenv local miniconda2-latest; python -c 'from distutils.sysconfig import get_python_inc; print(get_python_inc())'` \
        -DPYTHON2_NUMPY_INCLUDE_DIRS=`pyenv local miniconda2-latest; python -c 'import numpy; print(numpy.get_include())'` \
        -DPYTHON2_LIBRARIES=`find $PYENV_ROOT/versions/miniconda2-latest/lib -name 'libpython*.so'` \
        -DBUILD_opencv_python3=ON \
        -DPYTHON3_EXECUTABLE=`pyenv local miniconda3-latest; pyenv which python` \
        -DPYTHON3_INCLUDE_DIR=`pyenv local miniconda3-latest; python -c 'from distutils.sysconfig import get_python_inc; print(get_python_inc())'` \
        -DPYTHON3_NUMPY_INCLUDE_DIRS=`pyenv local miniconda3-latest; python -c 'import numpy; print(numpy.get_include())'` \
        -DPYTHON3_LIBRARIES=`find $PYENV_ROOT/versions/miniconda3-latest/lib -name 'libpython*.so'` \
        ..

このとき、CMakeを走らせたときの序盤にこんなメッセージが出たり(PythonLibsを見つけられてなかったり、意図したのと違うものを見つけに行ってる)、

 -- Found PythonInterp: /home/xxxx/.pyenv/versions/miniconda2-latest/bin/python (found suitable version "2.7.14", minimum required is "2.7")
 -- Found PythonLibs: /usr/lib/x86_64-linux-gnu/libpython2.7.so (found suitable exact version "2.7.14")
 -- Found PythonInterp: /home/xxxx/.pyenv/versions/miniconda3-latest/bin/python (found suitable version "3.6.3", minimum required is "3.4")
 -- Could NOT find PythonLibs (missing:  PYTHON_LIBRARIES PYTHON_INCLUDE_DIRS) (found suitable exact version "3.6.3")

CMakeの最後の結果表示のときにこんなメッセージが出たり(LibrariesがNO)、

 --   Python 2:
 --     Interpreter:                 /home/xxxx/.pyenv/versions/miniconda2-latest/bin/python (ver 2.7.14)
 --     Libraries:                   NO
 --     numpy:                       /home/xxxx/.pyenv/versions/miniconda2-latest/lib/python2.7/site-packages/numpy/core/include (ver 1.14.0)
 --     packages path:               lib/python2.7/site-packages
 --
 --   Python 3:
 --     Interpreter:                 /home/xxxx/.pyenv/versions/miniconda3-latest/bin/python (ver 3.6.3)
 --     Libraries:                   NO
 --     numpy:                       /home/xxxx/.pyenv/versions/miniconda3-latest/lib/python3.6/site-packages/numpy/core/include (ver 1.14.0)
 --     packages path:               lib/python3.6/site-packages

正しく指定したはずのライブラリのパスをCMakeがどうも認識してくれない様子のときは、CMakeのバージョンを疑ってみてください

% cmake --version
cmake version 2.8.12.2

2.8系では、うまくPythonのライブラリをみつけてくることができないようです。
OpenCVの提供するCMakeLists.txtのcmake_minimum_requiredは(Linuxであれば)2.8になっているので、特に怒られることなく進んでしまう、というのが罠でした(今回取り上げたかなり限定的なシチュエーション以外ではそれで問題なく動くためです)。
より新しいCMake 3.5などを使ってください。

特にUbuntu14.04をまだ使っていたりした場合は、標準でapt-getしたものは2.8までになります。
野良ビルドするなり、PPAにするなり、新しいUbuntuに乗り換えるなりするといいです。

自分用メモ。

UbuntuでOpenCVをlibjpeg-turboつきでビルドする

都道府県別の一人あたり魚介類消費量では、青森県がトップで、以下秋田、鳥取、新潟、富山と日本海側の県が続きます。島国・沖縄が意外にも最下位です。

さて、OpenCVで画像をロードするのを速くしたくて、JPEGについてはlibjpeg-turboというのが使えることを知りました。
libjpeg-turboはlibjpegをSIMDなどによって高速化したものでAPIレベルの互換性を保っています。
条件が良ければデコードが数倍速くなるということで、これをOpenCVに組み込んでビルドする方法をメモ。

Continue reading

第14回 画像の認識・理解シンポジウム(MIRU2011)を聴講してきました

石川県金沢市・金沢市文化ホールで2011年7月20日から22日にかけて開催されたMIRU2011へ参加し聴講してきました.
もともとMIRUで扱われる内容は結構幅広い分野に渡っていて,そのなかでも私自身の興味の強い分野の発表もたくさんあり,内容の上では当然,さらには多くの人と出会いいろんな話をすることができるなど,本当に得るものの多いシンポジウムでした.

私自身は前座イベントの全日本CV勉強会にも参加しましたが,そちらの報告については別の記事でがっつりしてるので,併せてご覧いただければと思います.

今日はいつものイベント参加記録のような雰囲気ではなく,ほんとにあっさりと感想を書いていくだけの記事になります.

Continue reading

全日本CV勉強会に参加しました.ついでに少ししゃべりました.

2011年7月20日~22日の3日間にかけて北陸の地で開催される『第14回 画像の認識・理解シンポジウム(MIRU2011)』へやってきました.
そのMIRU実行委員会の協力の下,東名阪の各CV勉強会が合同で主催しカジュアルにCVを語るイベント「Japan Computer Vision Day ─全日本CV勉強会─」(以下JapanCV)が前日同会場にて開催されました.

僕はMIRUへ参加が決まるずっっっっと前からJapanCVへの参加表明をしてて,実際に参加しLTまでさせていただき,もうホントに素晴らしいイベントでした.ということで,報告いたします.

#MIRU本会の空き時間中に書いた記事なので書き足りないかもです.増えるかも.

Continue reading

第9回名古屋CV・PRML勉強会に参加しました

今月も,名古屋CV・PRML勉強会が開催され,参加してまいりました!

いつもの乱雑なメモ形式で報告いたします.

と言ってもスライドをずっと追いかけてたときとか,あと後半ほど自分の脳みその疲労がアレでメモのクオリティ下がってます><;;
そこんところはおゆるし願います…

今回の勉強会について

  • 日時: 2011年7月16日
  • 場所: 中部大学名古屋キャンパス(いつもの場所)
  • イベントページ: http://partake.in/events/ca2f9aaf-e529-4fce-ad91-7975ae67ec5e
  • テーマ: 先月開かれた学会CVPRの論文紹介
  • 参考ページ: CVPR2011のページ http://www.cvpapers.com/cvpr2011.html
  • togetter: http://togetter.com/li/162170

Continue reading

第8回名古屋CV・PRML勉強会に参加しました

今日は第9回名古屋CV・PRML勉強会が開催されます.

1ヶ月前の第8回の報告を今さら!!
ていうか,第7回が飛んでますね><

さてしょっぱなからツッコミどころ満載ですが,第8回についての報告を.
第8回もまた非常に素晴らしい内容で,本当に参加してよかったと思っています.

ということで,いつもの箇条書きメモ形式でまとめました.
といってもまとまりはぜんぜん無いです.ホントにメモそのままです.

今回の勉強会について

  • 日時: 2011年6月19日
  • 場所: 中部大学名古屋キャンパス(いつもの場所)
  • イベントページ: http://partake.in/events/2274776c-bf38-47aa-983a-282199fd742c
  • テーマ: 『デジカメの画像処理』(amazon)の著者をお招きし,

    • オムロン・川出先生より,3章『人物画像の処理−最高の表情を撮る−』
    • 中部大学・藤吉先生より,4章『物体の追跡−ねらった被写体を逃さない−』
    • この本は2011.4.22に発売されたばかり
    • すごく読みやすい本です

      • これから研究とかする初学者…っていう一見ニッチなようで実は需要の大きい層にがっちり食い込んでると思います

Continue reading

第6回名古屋CV・PRML勉強会に参加しました

4月16日に開催された第6回 名古屋CV・PRML勉強会(以下・名古屋CV)に参加しました。
そう、前日の名古屋Scala勉強会に参加した次の日です。
今回の名古屋CVは初学者向けに広く浅くCVについて紹介するというテーマで、私にとっていつも以上に有意義なものだったので、詳細をまとめようと思います。
なお、メモは発表者の方の発言だけではなく、個人的解釈による補足などを含んでいますので、誤解等あったらご指摘願います。

Continue reading