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しておけば問題なし」らしい
。。。そんな怖いものですか。。。。
やっぱり、ちゃんとした仕様はほしいかな?
OpenCV のインストール
参考にしたサイトはこちらから
Physics-Station: OpenCV を Visual Studio で使う方法
このサイトの通りにしたら、きれいにいけました。
環境は以下の通り
- Windows 7 64bit
- Visual studio 2010 ultimate SP1
OpenCV 2.4.8をインストールする
1) 以下のサイトから最新版をダウンロードする
http://sourceforge.net/projects/opencvlibrary/files/
「Looking for the latest version? 」の後にLatest Versionがあるので、こちらをダウンロードする
2014年3月19日の最新版は以下の通り.
opencv-2.4.8.exe (362.0 MB)
2) ダウンロードしたファイルをダブルクリックし、展開するOpenCVのディレクトリを指定
ex) C:\OpenCV\
3) あとは動作にしたがうだけ
4)終了後に、「システムのプロパティ」→「システムの詳細設定」→「詳細設定」→「環境変数」
と選択する
5) ユーザ変数とこで、「新規」をクリックし「変数名」に「OpenCV」を、「変数値」に2)のパスを通す
6)ユーザ変数に「PATH」があるなら、「;%OpenCV%」と一番後ろにおく
インストールしたOpenCVのライブラリを種々のコードでも利用するため、
ライブラリ読み込みのためのヘッダファイルを作成する。
ライブラリにある番号はOpenCVのバージョンなので、インストールしたバージョンに合わせるといいらしい。
便利ですね。
このファイルは上で設定した%OpenCV%\build\include\opencv2\内の「opencv_lib.hpp」とする。
#if _DEBUG #pragma comment(lib, "opencv_calib3d248d.lib") #pragma comment(lib, "opencv_contrib248d.lib") #pragma comment(lib, "opencv_core248d.lib") #pragma comment(lib, "opencv_features2d248d.lib") #pragma comment(lib, "opencv_flann248d.lib") #pragma comment(lib, "opencv_gpu248d.lib") #pragma comment(lib, "opencv_highgui248d.lib") #pragma comment(lib, "opencv_imgproc248d.lib") #pragma comment(lib, "opencv_legacy248d.lib") #pragma comment(lib, "opencv_ml248d.lib") #pragma comment(lib, "opencv_nonfree248d.lib") #pragma comment(lib, "opencv_objdetect248d.lib") #pragma comment(lib, "opencv_ocl248d.lib") #pragma comment(lib, "opencv_photo248d.lib") #pragma comment(lib, "opencv_stitching248d.lib") #pragma comment(lib, "opencv_superres248d.lib") #pragma comment(lib, "opencv_ts248d.lib") #pragma comment(lib, "opencv_video248d.lib") #pragma comment(lib, "opencv_videostab248d.lib") #else #pragma comment(lib, "opencv_calib3d248.lib") #pragma comment(lib, "opencv_contrib248.lib") #pragma comment(lib, "opencv_core248.lib") #pragma comment(lib, "opencv_features2d248.lib") #pragma comment(lib, "opencv_flann248.lib") #pragma comment(lib, "opencv_gpu248.lib") #pragma comment(lib, "opencv_highgui248.lib") #pragma comment(lib, "opencv_imgproc248.lib") #pragma comment(lib, "opencv_legacy248.lib") #pragma comment(lib, "opencv_ml248.lib") #pragma comment(lib, "opencv_nonfree248.lib") #pragma comment(lib, "opencv_objdetect248.lib") #pragma comment(lib, "opencv_ocl248.lib") #pragma comment(lib, "opencv_photo248.lib") #pragma comment(lib, "opencv_stitching248.lib") #pragma comment(lib, "opencv_superres248.lib") #pragma comment(lib, "opencv_ts248.lib") #pragma comment(lib, "opencv_video248.lib") #pragma comment(lib, "opencv_videostab248.lib") #endif
Visual studio 2010での設定
Visual studio 2010を起動し、「ファイル」→「新規作成」→「プロジェクト」を選択
「空のプロジェクトを選択する」
プロジェクト名を今回 OpenCV\Tutorial\Smoothとする。
(理由はサンプルコードがあるから!)
1) 読み込むためのライブラリの設定
OpenCVのディレクトリについて、「構成プロパティ」→「VC++ディレクトリ」から以下を設定する
- インクルードディレクトリ
C:\OpenCV\build\include
- ライブラリディレクトリ
サンプルコードに、次の一行を入れる。
#include <opencv2/opencv_lib.hpp>
私は、そのまま参考サイトのコードを使ってみました。
(わかりやすいし勉強になりました!ありがとうございます!)
//インクルードファイル指定 #include <opencv2/opencv.hpp> //静的リンクライブラリの指定 #include <opencv2/opencv_lib.hpp> //名前空間の指定 using namespace cv; int main() { //width120, height100の画像を作成 Mat src = Mat::zeros(100,120,CV_8UC3); //画像にHello World!を描く putText(src, "Hello World!", Point(5,50), FONT_HERSHEY_SIMPLEX, 0.6, cv::Scalar(0,0,200), 2, CV_AA); //画像を表示 imshow("",src); //ウインドウの表示時間(0はキーが押されるまで閉じない) waitKey(0); return 0; }
Mac でisoファイルのDVDを作成する
だいぶ簡単過ぎて,びっくりした.
参考はこちら
MacでISOイメージディスクを作成 | EzXNetwork
私が改めて說明するまでもないです.
- 「アプリケーション」から「ユーティリティ」を選択.
- →「ディスクユーティリティ」をダブルクリックして,DVDに焼きたいデータを選択
最後に、ディスク作成を押下する
これで、isoの作成ができる.・・・・なるほど!
OpenGLのインストールについて
学生さんから質問があったので、おさらいがてらにメモを記述
OpenGLのインストールは以下の環境で行いました。
- OS:Windows 7 64bit
- Visual studio 2010
- OpenGLのダウンロード
以下からソースを適当なフォルダ上に落とす
Nate Robins - OpenGL - GLUT for Win32
- ダウンロードしたZipを解凍すると、以下の通り
- 32bit版
- glut.h
- glut32.dll
- glut32.lib
次のようにいれてみる。
- glut32.lib
- C:¥Program Files (x86)¥Microsoft Visual Studio 10.0¥VC¥lib\
- glut.h
- C:¥Program Files (x86)¥Microsoft Visual Studio 10.0¥VC¥include¥GL
- glut32.dll
- C:¥Windows¥system32
- (64bit)
- glut32.lib
- C:¥Program Files¥Microsoft Visual Studio 10.0¥VC¥lib\
- glut.h
- C:¥Program Files¥Microsoft Visual Studio 10.0¥VC¥include¥GL
- glut32.dll
- C:¥Windows¥SysWOW64
設定は以上。
以下のコード*1をビルドして、動けば、OK
#include <GL/glut.h> // 環境によっては<glut.h>なので,自分の環境に合わせる #include <math.h> int mouse_l = 0; int mouse_m = 0; int mouse_r = 0; int mpos[2]; // mpos[0]=xコツノク, mpos[1]=yコツノク double trans[3] = {0.0, 0.0, 0.0}; double theta[3] = {0.0, 0.0, 0.0}; double angle[3] = {0.0, 0.0, 0.0}; void display() { glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); glLoadIdentity(); glRotated(angle[0], 1.0, 0.0, 0.0); // xシエ 、豼エ、ヒイセ glRotated(angle[1], 0.0, 1.0, 0.0); // yシエ 、豼エ、ヒイセ glRotated(angle[2], 0.0, 0.0, 1.0); // zシエ 、豼エ、ヒイセ glutWireCone(1.0, 2.0, 5, 10); glutSwapBuffers(); } void mouse(int button, int state, int x, int y) { switch(button){ case GLUT_LEFT_BUTTON: if(state == GLUT_DOWN){ mpos[0] = x; mpos[1] = y; mouse_l = 1; } if(state == GLUT_UP){ mouse_l = 0; } break; default: break; } } void motion(int x, int y) { if(mouse_l == 1){ theta[0] = (double)(y-mpos[1])/5.0; theta[1] = (double)(x-mpos[0])/5.0; } if(mouse_l == 1 || mouse_m == 1 || mouse_r == 1){ mpos[0] = x; // ・ワ・ソ・。、キ、ニ、、、・ネ、ュ、ホ ・゙・ヲ・ケ、ホxコツノク mpos[1] = y; // ・ワ・ソ・。、キ、ニ、、、・ネ、ュ、ホ ・゙・ヲ・ケ、ホyコツノク angle[0] += theta[0]; angle[1] += theta[1]; glutPostRedisplay(); } } void reshape(int w, int h) { glViewport(0, 0, w, h); glMatrixMode(GL_PROJECTION); glLoadIdentity(); if (w <= h) glOrtho(-2.0, 2.0, -2.0*(GLfloat)h/(GLfloat)w, 2.0*(GLfloat)h/(GLfloat)w, -10.0, 10.0); else glOrtho(-2.0*(GLfloat)w/(GLfloat)h, 2.0*(GLfloat)w/(GLfloat)h, -2.0, 2.0, -10.0, 10.0); glMatrixMode(GL_MODELVIEW); } int main(int argc, char **argv) { glutInit(&argc, argv); glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB | GLUT_DEPTH); glutInitWindowSize(500, 500); glutCreateWindow(argv[0]); glutReshapeFunc(reshape); glutDisplayFunc(display); glutMouseFunc(mouse); glutMotionFunc(motion); glutMainLoop(); return 0; }
*1:すみません。。。拾いものなのですが、どこから拾ったか忘れました。。。orz
VTKでC++のパスを通す
VTKを利用して,C++のCmakeをかけるとPathが通ってないというエラーが発生した.
よくわからないので,友人のVTKスペシャルなX博士に相談
なんと,VTKのBuildの時,「Build SHARE LIB」にチェックを入れたのがまずかったらしい*1..
つまり,dllができちゃったのがまずいのよ,と言われ泣きそうなった...
そうなのか...
そして,再Buildを行うとすんなりととおりました.
うん,これで,いちいち,Directory直下にライブラリを入れなくても良くなりました.(謎)
*1:以前の記事VTKのインストール - 日々鍛錬