2021年01月24日

Scale-Invariant Feature Transform

現在、SIFT ( Scale-Invariant Feature Transform ) のサンプル・プログラムを製作中です。

画像の特徴量を求めるアルゴリズムですが、処理内容はなかなかに複雑で苦戦中です。opencv には SIFT が実装されているので、python を使って比較しようと思い、VirtualBox 上の xubuntu にインストールしたら、なんと SIFT が使えないことが判明。ビルドし直さないとダメなようですね。面倒なので、Windows に python をインストールして利用しています。ある程度は一致するところがあるものの、違う部分も多くて悩んでいます。最終手段として、opencv のソースを眺めているところです。

ということで、次回のアルゴリズムのコーナーのテーマはおそらく SIFT 関連になります。
xubuntu ( ubuntu でも同じです ) で SIFT が利用できるようにすると同時に python でも使えるようにするのは結構面倒な作業が必要です。

1. 適当なディレクトリを作成して、その中に github からソースをダウンロード

git clone https://github.com/opencv/opencv.git
git clone https://github.com/opencv/opencv_contrib.git

2. opencv ディレクトリ下に移動して、新規ディレクトリ ( 例えば release ) を作成

3. 作成したディレクトリに移動して、以下のコマンドを入力

cmake \
-D CMAKE_BUILD_TYPE=RELEASE \
-D CMAKE_INSTALL_PREFIX=/usr/local \
-D OPENCV_GENERATE_PKGCONFIG=ON \
-D INSTALL_PYTHON_EXAMPLES=OFF \
-D INSTALL_C_EXAMPLES=OFF \
-D OPENCV_EXTRA_MODULES_PATH=../../opencv_contrib/modules \
-D PYTHON_DEFAULT_EXECUTABLE=/usr/bin/python3.8 \
-D PYTHON2_INCLUDE_DIR=/usr/include/python2.7 \
-D PYTHON2_INCLUDE_DIR2=/usr/include/python2.7 \
-D PYTHON2_INCLUDE_PATH=/usr/include/python2.7 \
-D PYTHON2_LIBRARIES=/usr/lib/x86_64-linux-gnu/libpython2.7.so.1.0 \
-D PYTHON2_LIBRARY=/usr/lib/x86_64-linux-gnu/libpython2.7.so.1.0 \
-D PYTHON2_LIBRARY_DEBUG=/usr/lib/x86_64-linux-gnu/libpython2.7.so.1.0 \
-D PYTHON3_INCLUDE_DIR=/usr/include/python3.8 \
-D PYTHON3_INCLUDE_DIR2=/usr/include/python3.8 \
-D PYTHON3_INCLUDE_PATH=/usr/include/python3.8 \
-D PYTHON3_LIBRARIES=/usr/lib/x86_64-linux-gnu/libpython3.8.so.1.0 \
-D PYTHON3_LIBRARY=/usr/lib/x86_64-linux-gnu/libpython3.8.so.1.0 \
-D PYTHON3_LIBRARY_DEBUG=/usr/lib/x86_64-linux-gnu/libpython3.8.so.1.0 \
-D PYTHON3_NUMPY_INCLUDE_DIRS=/usr/lib/python3/dist-packages/numpy/core/include \
-D PYTHON3_NUMPY_VERSION=1.17.4 \
-D BUILD_EXAMPLES=OFF \
..

4. make、make install でモジュールをビルド・インストール

5. /usr/local/lib/python3.8/dist-packages/cv2/python-3.8/ 下に cv2.cpython-38-x86_64-linux-gnu.so が生成されているので、シンボリックリンク cv2.so として作成

ln -s cv2.cpython-38-x86_64-linux-gnu.so cv2.so

簡略化して書いていますが、当然 sudo が必要なところもあるのでご注意を。

この記事へのトラックバックURL

http://fussy.mediacat-blog.jp/t142245
※このエントリーではブログ管理者の設定により、ブログ管理者に承認されるまでコメントは反映されません