OpenCV 2.0を試してみた

この連休中にちょっとOpenCV 2.0で遊んでいました。 ライブラリの規模がかなり大きくなったのでソースを読むのも大変です; IplImage や CvMat は 新しいC++インタフェースでは cv::Mat に取って代わります。 (1.1preで追加されたWImageクラスの立場は? 関連:cv::WImage ? OpenCV 1.1) また、メモリ管理が賢くなっているので、後始末は各クラスのデストラクタに任せておきましょう。 boostのshared_ptrと同様のスマートポインタ(c…

Thriftでバイナリデータを扱う

Thriftでバイナリデータをやりとりする方法。 以前、FlexでXML-RPCを利用していた時は、確かbase64にエンコードして返していたと思うので、 Thriftでも同様にバイナリデータはbase64にエンコードして返すようにします。 Thriftのソースを漁っていると TBase64Utils とかいうのを見つけたのですが、 どうせboost必須なフレームワークなのでboostを使ってエンコードしてみます。 インタフェースとして、 ・サービス名を Test ・プロシージャ名を retur…

memcached: Slab Allocator

僕の務める会社でも memcached はほとんどのサービスで利用されています。 今は業務も少ないので、ひまつぶしにmemcachedのコードを読んでいました。 Slab Allocatorの部分に興味を持ったので、それについてわかったことのメモ。 以下のサイトで事前知識を付けてからコードを読みました。 memcachedを知り尽くす:第2回 memcachedのメモリストレージを理解する Slab Allocator : メモリの確保・管理を行うメカニズム  ・メモリアロケーションでオーバーヘ…

Thrift + OpenCV

Thriftを利用してOpenCVの関数をスクリプトから呼んでみます。 といってもRPCで繋げるだけで特別なことをする必要はありません。 ここでは、画像の各チャンネルの平均値と標準偏差を求めてみます。 サーバ側でOpenCVの cvAvgSvd() を利用すればOK。 まず、最初にRPCのインタフェースをThrift IDLに書きます。 ここでは、平均と標準偏差を求める関数を2つ作ることにしました。 各チャンネルの値が欲しいので戻り値は list<double> に、 引数は画像ファ…

typename

業務でつまづいたことメモ。 テンプレートパラメータの宣言でclassとtypenameの違いはないが、typenameにはもう一つの意味があって、これを使わなければならない場所がある。例えば、STLコンテナを引数に取る関数テンプレートを作る時、

C++には、テンプレート内にあるネストされた依存名は、特に指示されていなければ型名とは解釈されないというルールがある。T::const_iteratorを型名と解釈させるためにはコンパイラ…

実践 OpenCV 映像処理&解析

実践OpenCV―映像処理&解析を買いました。 6月10日発売のOpenCVの新しい書籍です。 NAISTの人達が書いたOpenCV プログラミングブックを既に持っていてこの本を買う意義としては、 強いて挙げるなら6章の「OpenGLとの連携」と7章の「物体検出の機械学習」の部分でしょうか。 ちなみに5章では「映像解析」を扱っていますが、ここで紹介されている処理を載せておきます。 ・テンプレートマッチング ・オプティカルフロー ・離散フーリエ変換フィルタリング ・モーションテンプレート…

GPU

表題に”実時間”という文字を入れたいので高速化に励む日々。 そんな時 ”それGPUで” のお言葉。 良いアルゴリズムをひねり出す頭がないので機械に頼ります。 ただ、今度は別のことで頭をひねることになりそうですが; ついこのあいだGeForce 9600 GTに変えたので、デバイスクエリとバンド幅のテスト。 ・環境 Core2Quad Q9650 3.00GHz, DDR2-800 2GB, GeForce 9600 GT, PCI Express 2.0 [crayon-6623a61e8bb7…