ITKのインストール その1(一番基本的なインストール)
順調に2ヶ月更新になっていることは気にしないでください.
更新している時間がないので...
#と言っても,,,色々実験ノートの一つとして使ってるので,やはり更新は必要です.
今回はITKのインストールを説明します.
ITKとは,については,後日記載予定(予定は予定であくまで未定)
ITKのインストールと一言で言っても,色んなパターンがあります.
ここでは,以下のように分けたITKのインストール方法を説明します.
今回は,1. の基本的なITKインストール方法の説明
以下の環境で動作を確認.
- Windows 7 64bit Service pack 1
- Visual studio 2012 ultimate SP1 (2010, 2013でもOKだけど,私は2012で確認)
- Windows SDK Ver. 8
また,ITKのインストール環境には以下を用意
Windows SDKのインストールされたVersionがわからない場合,レジストリで確認できるので,
以下から,たどってみる
1. スタートメニュ―の検索から「regedit」を起動
2. 「HKEY_LOCAL_MACHINE\Software\Microsoft\Microsoft SDKs\Windows\」をたどる
3.インストールされたリストが提示
あとは,.NETも最新版をあてておくようにしましょう.
1. ITKのダウンロード
以下のサイトからITKのソース一式をダウンロード
ITK Download
ダウンロードされたデータをSouerceとして保存したい場所にてディレクトリを展開.
展開されたディレクトリ(Winならフォルダの意)を今回ITK452srcとした
%MyLibDir%ITK/ITK452/ITK452src/
%MyLibDir%は,自分の環境にインストールする一式を取りまとめたフォルダやディレクトリを指している.
2. CMake でSource とBuild の設定
CMakeを起動し,以下のように指定
起動時,Compilerの設定が求められるので,自分の環境に合せたCompilerを選択する.
#私は,MSVS12, x64を選択
Where is Source code : %MyLibDir%ITK/ITK452/ITK452src/ <先ほどのSourceの指定フォルダ>
Where is Build he binaries : %MyLibDir%ITK/ITK452/ITK452src/Build <先ほどのSourceの指定フォルダにBuildを作成>
Build指定のフォルダがない場合,作る?と聞かれるのでYesを押下
Configureを押下して待つ
3. CMakeのConfigure準備
2. の方法で,一度Configureが終了→真っ赤になる.
Configure準備の準備をととのえる.
今回はStandardなConfigなので,以下を設定
BUILD_DOCUMENTATION チェックなし
BUILD_EXAMPLE チェックなし
BUILD_SHARED_LIBS チェックなし
BUILD_TESTING チェックなし
CMAKE_CONFIGURATION_TYPES: Debug; Release
CMAKE_INSTAL_PREFIX : %MyLibDir%ITK/ITK452/ITK452Bin/stBin
CMAKE_PREFIX_PATH :C:\Program Files (x86)\Windows Kits\8.0\Lib\win8\um\x64 (先のWindowsSDKの場所を指定)
CMAKE_MODULE_PATHC:\Program Files (x86)\Windows Kits\8.0\Lib\win8\um\x64
BUILD_* について,時間がかかったり,必要なライブラリ,環境が求められる.
また,TESTもものすごい時間がかかる.
だから,チェックをつける必要ありません.
BUILD_SHARED_LIBS については,別のインストール方法で記載します.
上記設定後,先と同様にConfigureを押下
赤の注意が出たら,指示に従って修正するけど,この段階では出ないだろう.
#ただし,INSTALL_PREFIXで指定したフォルダ名が長い時は怒られますので,
#解りやすく区別しやすい表記名で(日本のはもってのほかですが,空白や記号を入れないこと!)
4. インストーラの構成
Configが終了すれば,「Configuring done」と出るので,次に「Generate」ボタンを押下
問題なければ,「Generating done」が表示され,2.で指定したBuildフォルダ内に「ITK.sln」ができる.
このソリューションファイルを開いて,準備が整うのを待つ
5.ALL_BUILD とINSTALLのビルド
ITK.slnの準備が整ったら,まずはDebug と x64の環境下でALL_BUILDのBuildを行う.
問題なく終了したら,INSTALLのBuildを行う
次に,Releaseでx64環境下でALL_BUILDのBuild,INSTALLのBuildを順に行う.
終了後に,INSTALL_PREFIXで指定した場所にてそれぞれ,以下のフォルダ(ディレクトリ)が
作成され,それぞれのファイルができている.
bin/
include/
lib/
share/
これで,ITKのインストールは終了
あとは,環境変数設定と動作確認
6. 環境変数の設定
スタートメニューやエクスプローラ内の「コンピュータ」をクリックすると,エクスプローラのアドレスバー下に「システムのプロパティ」が出現する,
システムの詳細設定を選択し,「詳細設定」→「環境変数」を指定
環境変数内に「新規作成」で以下を設定
変数名 ITKPath (お好きな半角英数字で)
変数値 <CMAK_INSTALL_PREFIXの指定場所>
あとは,すべてOKを押下,システムプロパティをすべて終了
Mac にHomebrew をインストールする
Macports ではSVNなどの設定やら,Proxyの問題がありありです.
ちゃんと設定やらをしたらよいのですが,自宅でやら研究室でやら..の研究を行うのであれば,port updateの度に設定を変えるのは正直めんどくさい.
なら,proxyに依存したくない! そんな私に朗報
#たまたま,環境でhomebrew のproxy が大丈夫だったというオチはありますが...
#proxy認証環境は管理者にお問い合わせが必要です.
「HomeBrew」を使えば良い
Home brew
ということで,インストールする.
インストール方法は以下のとおり
参考サイトはこちら
MacOSX - パッケージ管理システム Homebrew - Qiita
ただし,事前にxcodeをインストールしておくこと.
私は,ver.5.1.1 (2014年4月28日における最新Ver.)で以下を行いました.
1 . Javaのインストール確認とインストール
Javaの確認は以下から
$ java -version (インストールされているなら,以下のようなメッセージが出力) java version "1.6.0_65" Java(TM) SE Runtime Environment (build 1.6.0_65-b14-462-11M4609) Java HotSpot(TM) 64-Bit Server VM (build 20.65-b04-462, mixed mode)
インストールされていなければ,インストールするよう,メッセージが出力されるので,
指示に従います.
2. xcode コマンドラインをインストール
実は,こちらが今回,homebrew インストールでは手間取りました.
#あまり手間ではなかったけど....
というのも,xcodeからのcommand Line tool のセットアップでお馴染みの,
『「Xcode」→「Preferences」→「Downloads」→「Components」』
では,できませんでした.
色々調べたら,以下がヒット
MavericksでCommand Line Tools for Xcodeをインストールする - Qiita
こちらの手順に従って,以下に従ってCommand Line Tool をインストール
Xcode->Open Developer Tool->More Developer Tools
こちらから,Command Line Tool を選択し,installを行うには,Apple IDのサイトに移動します.
ここで,Apple IDを入力すると,Command Line Toolがインストール出来る準備ができますので,
サイトからダウンロードし,インストールする.
3. HomeBrew 本体をインストールする
以下のコマンドをTerminal上で行う
ruby -e "$(curl -fsSL https://raw.github.com/mxcl/homebrew/go/install)"
本体インストールができたら,success というコメントが出ます.
そのコメントが出力されたなら,早速,homebrew の最新チェックと更新 を以下で行います.
4. システムの整合性確認
$ brew doctor
5. システム更新
$ brew update
これで,色々システムの更新やインストールができます.
Mac のOpenCVインストールはhomebrewを使うととっても簡単にできます.
次の機会にでも案内します.
Emacs の初期設定
init.elのとりまとめ.
今はダッシュのメモ書きなので,このスペースはinit.elのための落書き帳としてます.
参考にしたサイトは以下のとおり.
- Youhei SASAKI's official site: Emacsの設定 - 主に org ファイルの読み込み集 uwabamiさんの公式サイトより
- うわっ...私のEmacs、使いにくすぎ?だったら...カスタマイズシヤッセー!!ダァダァシエリイェッスッシェーショーヘイヘイ!!! - 三等兵
両者共にわかりやすいですが,uwabamiさんのサイトは特にわかりやすい.
今度時間があるときにでも,もっとよく読んで理解をしていきます.
ひとまず,私は以下のとおりに設定している.
; -*- Mode: Emacs-Lisp ; Coding: utf-8 -*- ;; ------------------------------------------------------------------------ ;; @ load-path ;; load-pathの追加関数 (defun add-to-load-path (&rest paths) (let (path) (dolist (path paths paths) (let ((default-directory (expand-file-name (concat user-emacs-directory path)))) (add-to-list 'load-path default-directory) (if (fboundp 'normal-top-level-add-subdirs-to-load-path) (normal-top-level-add-subdirs-to-load-path)))))) ;; load-pathに追加するフォルダ ;; 2つ以上フォルダを指定する場合の引数 => (add-to-load-path "elisp" "xxx" "xxx") ;;(add-to-load-path "elisp" "C:\MySystem\MySystem\emacs\lisp") (add-to-load-path "C:/MySystem/MySystem/emacs/elisp") (add-to-load-path "elisp") (add-to-load-path "elpa") (add-to-load-path "lisp") (add-to-load-path "site-lisp") (add-to-load-path ".emacs") ;; ------------------------------------------------------------------------ ;; @ general ;; common lisp (require 'cl) ;; 文字コード (set-language-environment "Japanese") (let ((ws window-system)) (cond ((eq ws 'w32) (prefer-coding-system 'utf-8-unix) (set-default-coding-systems 'utf-8-unix) (setq file-name-coding-system 'sjis) (setq locale-coding-system 'utf-8)) ((eq ws 'ns) (require 'ucs-normalize) (prefer-coding-system 'utf-8-hfs) (setq file-name-coding-system 'utf-8-hfs) (setq locale-coding-system 'utf-8-hfs)))) ;; Windowsで英数と日本語にMeiryoを指定 ;; Macで英数と日本語にRictyを指定 (let ((ws window-system)) (cond ((eq ws 'w32) (set-face-attribute 'default nil :family "Meiryo" ;; 英数 :height 100) (set-fontset-font nil 'japanese-jisx0208 (font-spec :family "Meiryo"))) ;; 日本語 ((eq ws 'ns) (set-face-attribute 'default nil :family "Ricty" ;; 英数 :height 140) (set-fontset-font nil 'japanese-jisx0208 (font-spec :family "Ricty"))))) ;; 日本語 ;======================================================================= ;フレームサイズ・位置・色など ;======================================================================= (setq default-frame-alist (append (list '(foreground-color . "black") '(background-color . "LemonChiffon") '(background-color . "gray") '(border-color . "black") '(alpha . (85 40)) '(mouse-color . "white") '(cursor-color . "black") '(font . "fontset-メイリオ") '(width . 100) ;文字数 '(height . 100) ;文字数 '(top . 100) ;pixel値 表示位置 '(left . 100)) default-frame-alist)) ;; スタートアップ非表示 (setq inhibit-startup-screen t) ;; scratchの初期メッセージ消去 (setq initial-scratch-message "") ;; ツールバー非表示 (tool-bar-mode -1) ;; メニューバーを非表示 ;;(menu-bar-mode -1) ;; スクロールバー非表示 (set-scroll-bar-mode nil) ;; タイトルバーにファイルのフルパス表示 (setq frame-title-format (format "%%f - Emacs@%s" (system-name))) ;; 行番号表示 (global-linum-mode t) (set-face-attribute 'linum nil :foreground "#800" :height 0.9) ;; 行番号フォーマット (setq linum-format "%4d") ;;; 対応する括弧を光らせる。 (show-paren-mode 1) ;;; ウィンドウ内に収まらないときだけ括弧内も光らせる。 (setq show-paren-style 'mixed) ;;; 現在行を目立たせる (global-hl-line-mode) ;;; カーソルの位置が何文字目かを表示する (column-number-mode t) ;;; カーソルの位置が何行目かを表示する (line-number-mode t) ;; 行末の空白を強調表示 (setq-default show-trailing-whitespace t) (set-face-background 'trailing-whitespace "#b14770") ;; タブをスペースで扱う (setq-default indent-tabs-mode nil) ;; タブ幅 (custom-set-variables '(tab-width 4)) ;; yes or noをy or n (fset 'yes-or-no-p 'y-or-n-p) ;; ミニバッファの履歴を保存する (savehist-mode 1) ;; ミニバッファの履歴の保存数を増やす (setq history-length 3000) ;; 行間 ;(setq-default line-spacing 0 ;; 1行ずつスクロール (setq scroll-conservatively 35 scroll-margin 0 scroll-step 1) (setq comint-scroll-show-maximum-output t) ;; shell-mode ;; フレームの透明度 (set-frame-parameter (selected-frame) 'alpha '(0.85)) ;; http://www.gentei.org/~yuuji/software/euc/instamp.el ;; 現在時刻挿入 (setq display-time-string-forms '(year "/" month "/" day " " dayname " " 24-hours ":" minutes " " (if mail " Mail" ""))) (display-time) ;; M-wやC-kでコピーしたものを、他のアプルケーションで貼り付け可能にする (cond (window-system (setq x-select-enable-clipboard t) )) ;;自動スペルチェック (add-to-list 'exec-path "C:/MySystem/MySystem/emacs/Aspell/bin") (setq-default ispell-program-name "aspell") ;;プログラムが起動したら,自動でスペルチェックを起動 (eval-after-load "ispell" '(add-to-list 'ispell-skip-region-alist '("[^\000-\377]+"))) ; flyspell-mode (mapc (lambda (hook) (add-hook hook 'flyspell-prog-mode)) ;;ここではコメントの領域におけるスペルチェック '( c-mode-common-hook emacs-lisp-mode-hook )) (defun my-flyspell-mode-enable () (flyspell-mode 1)) (mapc (lambda (hook) (add-hook hook 'my-flyspell-mode-enable)) ;;ここではファイル全体そのものにスペルチェック '( changelog-mode-hook debian-control-mode-hook tex-mode-hoo yatex-mode-hook text-mode-hook )) ;;auto-complete ;(add-to-list 'load-path "~/.emacs.d/site-lisp") ;(require 'auto-complete-config) ;(add-to-list 'ac-dictionary-directories "~/.emacs.d/site-lisp/ac-dict") ;(ac-config-default) ;; ;; ;; ------------------------------------------------------------------------ ;; @ modeline ;; モードラインの割合表示を総行数表示 (defvar my-lines-page-mode t) (defvar my-mode-line-format) (when my-lines-page-mode (setq my-mode-line-format "%d") (if size-indication-mode (setq my-mode-line-format (concat my-mode-line-format " of %%I"))) (cond ((and (eq line-number-mode t) (eq column-number-mode t)) (setq my-mode-line-format (concat my-mode-line-format " (%%l,%%c)"))) ((eq line-number-mode t) (setq my-mode-line-format (concat my-mode-line-format " L%%l"))) ((eq column-number-mode t) (setq my-mode-line-format (concat my-mode-line-format " C%%c")))) (setq mode-line-position '(:eval (format my-mode-line-format (count-lines (point-max) (point-min)))))) ;; モードラインに行番号表示 ;(line-number-mode t) ;; モードラインに列番号表示 ;(column-number-mode t) ;;;;;;;;;;;;;;;;;Lispの設定;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;auto-install (add-to-list 'load-path (expand-file-name "~/.emacs.d/auto-install/")) (require 'auto-install) (auto-install-update-emacswiki-package-name t) (auto-install-compatibility-setup) ;; ------------------------------------------------------------------------ ;; @ menu-tree.el ;; メニューバー日本語化 ;; http://www11.atwiki.jp/s-irie/pages/13.html (if (and (= emacs-major-version 22) (eq window-system 'x)) (setq menu-tree-coding-system 'utf-8)) (require 'menu-tree nil t) ;;;;;;;;;;;;;;;;;;;;;;;; ;;====================================================================== ;; TeX ;;====================================================================== ; YaTeX-mode (setq auto-mode-alist (cons (cons "\\.tex$" 'yatex-mode) auto-mode-alist)) (autoload 'yatex-mode "yatex" "Yet Another LaTeX mode" t) (setq load-path (cons "~/.emacs.d/yatex" load-path)) ;;ココにyatexのパス書く (setq tex-command "platex") (setq dvi2-command "C:/MySystem/MySystem/w32tex/dviout/dviout.exe" ) ;;ココdvioutのパス書く (setq dviprint-command-format "dvipdfmx %s ") ; BibTex (add-hook 'yatex-mode-hook 'turn-on-reftex)
VTKのCMakeLists.txtを読み解く
今回は時間の関係上,VTKに特化したCMakeLists.txtについて記載する.
以下に一般的なVTKのCmakeLists.txtを示す.
cmake_minimum_required(VERSION 2.8) PROJECT(VTKPolydataSingleObj) find_package(VTK REQUIRED) include(${VTK_USE_FILE}) add_executable(VTKPolydataSingleObj MACOSX_BUNDLE VTKPolydataSingleObj) if(VTK_LIBRARIES) target_link_libraries(VTKPolydataSingleObj ${VTK_LIBRARIES}) else() target_link_libraries(VTKPolydataSingleObj vtkHybrid) endif()
1行ずつ読んでいく
cmake_minimum_required(VERSION 2.8)
これは,CMakeを実行する際に,最低限守らないといけない,CmakeのVersionを示してます.
よって,このシステムは,CMakeのVersionは最低,2.8以上でなければなりません.
PROJECT(VTKPolydataSingleObj)
このシステムのプロジェクト名を指定します.
Makeファイルでいうところ,各実行系の名前を指定する所,ということでしょう.
ここでは,プロジェクト名をVTKPolydataSingleObjとしているようです.
さて,いよいよ,こちらからが本格的なVTK情報読み込みデス.
find_package(VTK REQUIRED)
VTKを動作させるために,必要なLink先やコードの位置を探している所デス.
位置などを読み込んだ後に,見つけたライブラリのパスなどを通します.
ここで,複数のライブラリを組み合わせます.
include(${VTK_USE_FILE})
VTK を動作させるためのファイル一式をプロジェクトに取り込む命令文
add_executable(VTKPolydataSingleObj MACOSX_BUNDLE VTKPolydataSingleObj)
<<
VTKを実行させる,実行系ファイルの名前の指定です.
第1引数がMain関数のコード名,第2は関係なし,第3引数が実行系ファイルの名前となる.
if(VTK_LIBRARIES)
target_link_libraries(VTKPolydataSingleObj ${VTK_LIBRARIES})
else()
target_link_libraries(VTKPolydataSingleObj vtkHybrid)
endif()
MATLAB で64bitのMexを行う設定
MexはMATLABの環境(コマンドライン)上で独自のC/C++を呼び出すためのバイナリファイル
バイナリファイルということは,バイナリ化が必要です.
64bitのシステムでMATLABのMexを行う設定
セットアップ環境は以下の通り
- Windows 7 64bit
- MATLAB 2007b
- Visual Studio 2010 Professional
Mexを64bitで動作させるためのパッチなるもの(VS2010MEXSupport.zip)を用意する
こちらからダウンロードした.
Small ideas for a big world: Configure Matlab to use Visual 2010 C/C++ compiler
そして,こちらのサイトをよく確認する.
というより,このサイト通りでちゃんと動作します
1) 自分の環境を確認する.
まずは自分の環境をよく確認することが大事です.
もちろんですが,確実にバックアップを取ることは重要です.
適宜,バックアップとして,上記フォルダをコピーしておいておく
2) MATLAB環境上で以下のコマンドを行う
>> matlabroot
私は以下のように出力された
C:\Program Files\MATLAB\R2007b
3)ダウンロードしたファイルを展開
先のLink先からダウンロードした,VS2010MEXSupport.zipを適当な位置に展開する.
展開した以下のファイルをすべて,1)の環境内にコピペする.
4)mexのコンパイラを確認する
mex -setupコマンドで,Visual studio2010が存在し,選択できることを確認する.
あとは,さくさくと行きます!
Kinect周りの環境設定
こういう時期なので、いろいろまとめておく。
OpenNIとKinect for Windows SDKは共存できないと聞く
そんなことはなかった。
いろいろ、バリエーションが広がる!
Kinect周りの環境設定
- Windows 7 64 Bit
- Visual studio 2010 ultimate SP1
- Kinect for Windows
インストールしたい環境は以下の通り
1)Kinect のドライバの設定
Kinect for Windows をそのままUSBポートに差し込むと自動でダウンロードされるので、じっと待つ
ただし、ここで絶対抜き差ししないこと
2) Kinect for Windows SDK 1.8のインストール
Kinect for Windowsの公式サイトはこちら
Kinect for Window Dev Center
いろいろResourcesなども揃っている。
非常に勉強になります。
上記のサイトからStartのコンテンツを選択し、ページ移動
「Downloads / Docs」内に「Kinect for Windows SDK」のLatest Ver.があるので選択し、ダウンロードして実行
3) DeveloperTool
Kinectの面白いソースが色々と展開されているので、こちらも併せてダウンロード&インストールしておく
試しに、どのような内容があるかを色々と試してみると面白いし、ソースも公開されてるのでコードもいろいろと遊んでみる。
これで、Kinect側の設定は以上
- NITE2.2の設定
1) NITE2.2のダウンロード
以下のサイトにアクセスする
NiTE 2.2.0.11 | OpenNI
こちらにアクセスすると、いろいろユーザ情報を入力するよう促される。
ユーザ情報を入力すると、ダウンロードが出来る準備が整う
2014年3月20日現在、Latest Ver,はNITE2.2
2)NITE2.2 インストール
ダウンロードされたexeファイルをそのまま展開すればよいです。
- OpenNI2.0をインストール
以下のサイトから自分の環境に応じたデータをダウンロード
OpenNI SDK (open-source)-Download | OpenNI
あとはexe実行するのみ
動作については。「スタートメニュー」→「OpenNI 64-bit 2」-> 「NView」を起動する。
起動できたらOK!
OpenNI, NITEの説明、また、DLL, LIBの説明は後の機会にする
MSVCP110.dll, MSVCP100.dllにハマる
Visual studio 2010 Ultimateを用いたサンプルの実行でエラーが出た。
そのエラーがMSVCP110.dllがないと言われた。
探して見ると、どーやらMicrosoft Visual C++ 2010 再頒布可能パッケージが
入っていないというエラー
以下のサイトを参照にさせてもらいました。
『MSVCR100.DLL が見つからなかったため、アプリケーションを開始できませんでした。』解決メモ - やすはるラボ+嫁(*・ω・)
1)Microsoft Visual C++ 2010 再頒布可能パッケージ(X86)を入れる
マイクロソフト公式ダウンロード センターから Microsoft Visual C++ 2010 再頒布可能パッケージ (x86) をダウンロード
なんと。。。64bitでもx86も入れるらしい。。。
こちらを先にexe実行する
2)Microsoft Visual C++ 2010 再頒布可能パッケージ(x64)を入れる
マイクロソフト公式ダウンロード センターから Microsoft Visual C++ 2010 再頒布可能パッケージ (x64) をダウンロード
先と同様に、exe実行する
これで、MSVCP110.dllの設定は完了
しかし、次にMSVCP100.dllがないと言われた。
ということで、検索すると日本語で以下がヒット
Microsoft Visual C++2010 再頒布可能パッケージ(MSVCP100.dll)のインストール
1)Microsoft Visual C++ 2012 再頒布可能パッケージ(x64)へ移動
マイクロソフト公式ダウンロード センターから Visual Studio 2012 更新プログラム 4 の Visual C++ 再頒布可能パッケージ をダウンロード
,,,一瞬びっくりしましたが、2012の再頒布可能パッケージを入れる!
あわわ・・・
2)ダウンロードするプログラムで以下を選択
私はチキンですので、x86->x64の順でインストールしました。
以上で、エラーが解決されます。
しかし、、、、、この再頒布可能パッケージのやり方など。。。
あまりVisual studio の仕様がよくわからないなぁ。。。。
調べまくったけど、こういう仕様はどうもブラックにハマってしまいそうになります。
友人曰く、「WindowsはひたすらDefaltUpdateしておけば問題なし」らしい
。。。そんな怖いものですか。。。。
やっぱり、ちゃんとした仕様はほしいかな?