<Memo>
Pythonで引数のNONEは IDLで書く場合は!NULLと書き換え
2022年におけるOPENCVでの特徴点抽出利用可否 (2022.01.12)
〇: SIFT, ORB, AKAZE
×: SURF (3.4, 4.xなどいずれのバージョンでも)
* SIFTは2022年現在特許が切れている
Windows11だとシステム環境変数にPythonのパスを書く必要あり!
<IDLからPython + OpenCVを使えるようにするメモ> (2022.01.12更新)
IDL8.5からPythonがIDL内でサポートされるようになった(IDL_bridgeという機能)。
それを使ってPython経由でOpenCVをIDLから利用できるようにする機会があったため、各種導入に関わるメモをここに。
IDLそのものがPythonを持つわけではなく、IDLからSpawn機能?でPythonを呼び出している様子。
◇Pythonの機能の紐づけ方(Windows)について
- Anacondaをインストールする (IDLヘルプで推奨されている)
Windows版はインストーラーが用意されているので
(https://www.continuum.io/downloads)
それをそのまま利用。インストーラーの指示に従ってインストール。
途中、他のアプリケーションからもAnacondaのPythonが見えるようにするチェックが入っていることを確認。
(デフォルトではチェックが入っている)
=> デフォルトではシステム環境変数に書き込まなくなった(2018.12.10)
インストール時にチェックを入れるか、インストール後自分でPath環境設定を編集する。
=> インストール後自分でPath環境設定を編集することが必須の様子 (2020.04.01)
2020.04.03現在、python3系ではAnaconda installerではpython 3.7(2021.07.12時点では3.8)がデフォルトでインストールされる。
このまま環境設定をうまく設定できてもidlから見てpython 3.7はサポート外となりpythonの機能が使えない。
仮想環境機能でpython 3.6仮想環境をanaconda内で作成し、その仮想環境のディレクトリにパスを通すことで解決。
conda promptで下記を実行 (2021.07.12: コマンドが間違っていたのを修正・・)
$ conda create -n py36 python=3.6
作成した仮想環境に、IDL_bridgeに必須のnumpyをインストールする。
$ conda activate py36
$ pip install numpy
その後、この仮想環境に対してWindows環境設定を行う。
例えば"C:\Anaconda3"にanacondaをインストールした場合、
ユーザーの環境変数ではなく、システム環境変数にパスを追記 (2022.01.12, Windows11の場合)
PATH =(もともとのパス); C:\Anaconda3\envs\py36; C:\Anaconda3\envs\py36\Scripts; C:\Anaconda3\envs\py36\Library\bin;
のように。
Pathが正しく通っていればIDLコンソールで
>>>と打ってpythonモードにして
>>> import sys
>>> sys.version
とすると状況が確認できる。たとえば
'3.6.13 |Anaconda, Inc.| (default, Mar 16 2021, 11:37:27) [MSC v.1916 64 bit (AMD64)]'
〇更新メモ:
- IDL8.5ではpython 3.X系はサポート外、IDL 8.6以降はサポートされる
- IDL8.8ではpython 2.X系がサポート外
- Linux(Ubuntu)ではpython3はIDL8.7からサポートされるようになったように見える (2019.11.30)
- Python3.5, 3.6, 2.7がサポートされている(IDL 8.7.3)
** OpenCVとの連携
=> Python 3.6.5 + OpenCV3.4.2.16 (opencv-python==3.4.2.16, opencv-contrib-python==3.4.2.16)で動作確認
=> Python 3.6.10 + OpenCV4.2.0 (pip install opencv-contrib-python)で動作確認 (2020.04.03)
OpenCV4系では特許の問題のあるツールが整理されている。実際に動作するかどうか調査中・・・
◇Pythonの機能の紐づけ方(Linux)について
IDL 8.5.1の例
Python27がデフォルトになっている環境で作業する(anacondaでpython27の仮想環境を準備するなど)。
ライブラリのパスを通す:
export LD_LIBRARY_PATH=/home/kouyama/anaconda3/envs/py27/lib: /usr/local/exelis/idl85/bin/bin.linux.x86_64:$LD_LIBRARY_PATH
◇IDLからの呼び出し方
・IDLのコマンドラインで「>>>」と打つと対話的にPythonを実行できる
>>> import sys
>>> sys.version
'2.7.11 |Anaconda 4.0.0 (64-bit)| (default, Feb 16 2016, 09:58:36) [MSC v.1500 64 bit (AMD64)]'
など
・プログラム内からは
;; バージョン確認 ;;
sys = Python.import('sys')
print, sys.version
;; Numpyも ;;
np = Python.import('numpy')
◇OpenCVをPythonを介してIDLから呼び出す
Anaconda promptでOpencv-contribをpip installする
$ pip install opencv-contrib-python
バージョンが合わないときは都度調整。
== 下記は古い情報 ===
1. OpneCVを拾ってくる
インストールページに従ってほしいバージョンのOpenCVをダウンロード
http://docs.opencv.org/2.4/doc/tutorials/introduction/windows_install/windows_install.html
ビルド済版のexeを実行すると既にコンパイルされたOpenCVツールが展開される。
2. OpenCVのPythonブリッジをコピー
展開されたフォルダの中から
C:\OpenCV-2.4.9\build\python\2.7\x64\cv2.pyd
C:\OpenCV-2.4.9\sources\modules\python\src2\cv.py
これらをAnacondaのsite-packagesフォルダにコピー。場所は例えば以下
C:\Anaconda2\Lib\site-packages\
(引用元: http://vision.is.tohoku.ac.jp/~kyamagu/ja/teaching/t1440-2014/01-python-setup.html)
;; Version確認 ;;
cv2 = Python.Import('cv2')
print, cv2.__version__
=== 下記は古い情報 ===
◇OpenCV 3系の導入
さすがにOpenCV2系はきついということで3系を。
-> Anacondaに導入するOpenCVが3であればそのまま3を使えるようになる(2017.02.01)
OpenCV3とOpencv_contribの導入(Windows)に関して
(参考元: http://qiita.com/hitomatagi/items/d5d475a446ec9c73261e)
Anaconda promptから
> conda install -c https://conda.anaconda.org/menpo opencv3
の実行で出来る。menpoとは。
## 某所にてidl brigdgeした際のメモ ##
python 2.7環境ではどうやってもimport numpyしたさいにセグメンテーションフォルトで落ちる
python 3.6環境では〇, ただしmenpo opencv3はうまく動作しなかったので下記を試した
opencv + contribをインストールするメモ:
https://www.tech-tech.xyz/python-opencv-pip-install.html
pip install opencv-contrib-python
でsift, surfも使えるようす
<< mini condaのinstall 設定 >>
https://docs.conda.io/en/latest/miniconda.html
からLinux 64-bit (bash installer)をダウンロードした後
Miniconda3-latest-Linux-x86_64.sh
を実行し、
インストール先を適宜ローカル or パスの見えるところに置く。
(ex /home/kouyama/miniconda3)
あとは
conda create -n <適当な名前 (ex. py36)> python=3.6
conda activate <適当な名前>
conda install numpy astropy spiceypy ...
その後 binとlibにexport PATHやexport LD_LIBRARY_PATHでパスを通しておく