Windows7にopenCV2.2.0をインストールしてみた。


SURFが使ってみたくて、Windows7 pro 32bitにopenCVをインストールしてみた。
インストールから、VC++のHelloWorldプロジェクトでビルドを通すまでをメモ。
基本、スムーズにいって15分くらいで出来た。

インストール

  1. http://sourceforge.net/projects/opencvlibrary/files/opencv-win/2.2/から「OpenCV-2.2.0-win32-vs2010.exe」を選択してダウンロード。VisualStudio2010を持ってなくてもこれです。(自分の環境は2005&2008)
  2. ダウンロードが終わったら、exeを実行するとインストールが始まります。特に迷う所はないですが、環境変数を設定しますか?と聞かれたので、とりあえず、カレントユーザのみ作成を選んでみました。
  3. インストールパスを変更していない場合、C:\OpenCV2.2配下にインストールされます。

VC++でopencvHelloWorld

…と言っても、opencv関連のインクルードファイルとlibがちゃんと見えるか確認する為のプロジェクトを作成してみただけです。

  1. VisualStudio2005を起動し、プロジェクトの作成を選択
  2. helloworld.cppを開き、opencv関連コードを埋め込んでみる

こんな感じ

#include "stdafx.h"
#include "Form1.h"
#include 
//for use opencv
#include 
#include 
using namespace helloworld;
[STAThreadAttribute]
int main(array ^args)
{
	// コントロールが作成される前に、Windows XP ビジュアル効果を有効にします
	Application::EnableVisualStyles();
	Application::SetCompatibleTextRenderingDefault(false);
	//test cord
	const char* imageFile = "./image/image.jpg";
	IplImage* grayImage = cvLoadImage(imageFile,CV_LOAD_IMAGE_GRAYSCALE);
	// メイン ウィンドウを作成して、実行します
	Application::Run(gcnew Form1());
	return 0;
}
  1. とりあえずビルド
    • 「cv.h」が見つからないエラー
    • インクルードパスの設定をしていないので当たり前
  2. 修正後ビルド
    • リンク時に沢山エラー。opencvのライブラリとリンクしていないので当たり前
  3. 再びビルド
    • 「ERROR: EMM intrinsics not supported in the pure mode!」とエラーが出た
  4. 上記エラーはプロジェクトの共通ランタイムの設定によるものなので修正する。
    • プロジェクトを右クリックし、プロパティを表示
    • [構成プロパティ]⇒[全般]⇒[共通ランタイムサポート]⇒[共通言語ランタイム サポート/clr]に変更(※デフォルトは純粋MSIL共通言語ランタイム(/clr:pure))

const メンバ関数

本日、コンパイルを通している時に一瞬原因が分からなくてショックでした。
という事でアルツハイマー脳の為のメモ

class TestClass {
public:
  TestClass():m_count(123){}
  int TestMethod1(void){ return m_count; }
  int TestMethod2(void)const{ return m_count; }
private:
  int m_count;
}

というクラスを定義したとします。これを以下のようにとある関数に渡してクラス内で定義した関数を呼び出します

void calleeMethod(const TestClass* testclass) {

     testclass->TestMethod1(); //コンパイルエラー
     testclass->TestMethod2(); //OK
}

こうなります。TestClassにconstを付加し、メモリの書き換えを行わない宣言をしている為です。constメンバ関数以外は怒られてしまいます

Facebookが最近気になる

久々の更新になります。色々、技術メモも残さなくてはなぁ。。。と思いつつ何も書いていないという…


突然ですが、最近Facebookが気になります。
半年前あたりから、Facebookの波(?)が来ているのを感じ、アカウントを作ってみましたが全く活用出来てない状態です。
最初は、どこかが仕掛けているように強く感じ、一部で盛り上がりをみせているなと思ってたのですが、最近は一般にもだいぶ浸透してきているように感じます。


Facebook肯定派の方は、匿名でないのが良い。信頼がおけるコミュニケーションが可能とおっしゃいます。それはFacebookの思想そのものでもあるし、分かるんだけど、偽名っぽいアカウントは削除する…など、何もそこまでやらなくても…という感じは今もしてたりします。


ビジネスユースとしては、とても向いているコミュニケーションツールだと思いますが、プライベート用途としては別に匿名で良くない?とも思います。(Facebookストーカーとかっていないのだろうか…)

外国(ここでは特に欧米)と日本の文化って結構違うし、例えばプログラマの人も海外の方って本名で活動している人は日本より全然多いと感じます。アメリカで生まれたFacebook、はたしてどのくらい日本で浸透するのか気になる所です。

革命の手助けをしたり、映画になってみたり、大活躍だなぁ…という事で今後の動向を見守りたいと思います。

ubuntu9.10移住の為の環境整備

この間vmware上に作ったばかりのubuntu9.10に色々入れている。
入れたもののメモ

sudo apt-get install global
  • boost library
sudo apt-get install libboost-dev
sudo apt-get install chromium-browser

    • 無事入りました

#ifdefいろいろ

プリプロセッサ命令なんだかんだでよく使います。マルチOS対応のコードを書く時など特に、#ifdefや#ifndefはよく使うけれども、elseifに該当するものは使った事がなかったのでメモ

#if define マクロ名
 
#elif define マクロ名
 
#else

#endif

みたいな感じで使えるらしい。

#ifdefいろいろと書いたけど、メモは1個

今年はもう少し何か書く

元々、技術的備忘録として用意したブログだったけれども、結局あんまり更新しないで今日に至る。

「これは業務情報?」とか考えるのが面倒くさいというのもあったけど、ただ単に更新してなかっただけっていうのが大半。

今年はもう少しログをつけながら、色々な作業するように心がけようっと