OpenCvSharpをつかう その21(C++ API 概要)

OpenCvSharpはもともとC言語OpenCV 1.0 APIを対象に作っておりました。以来6年経ち、C++ APIが充実し主流になってきたため、そのサポートを進めています。

ある程度は仕様が固まってきたので、使い方をご紹介していこうと思います。今回は大まかな概観です。2014/3/28リリース版をベースに書いています。

OpenCvSharpをつかう 記事一覧

続きを読む

OpenCVで時間の計測

cv::TickMeter を使いましょう。なんか影の薄いcontribにあります。

cv::TickMeter meter;
meter.start();

// 何かの処理

meter.stop();
std::cout << meter.getTimeMilli() << "ms" << std::endl;

定番は以下のような書き方ですが、卒業しましょう。OpenCVのを使わずQueryPerformanceCounter, timeGetTime等の別の手段を使うにしろ、大抵これと似たようになると思います。TickMeterにより、これよりも見通し良く、何をしているか直感的にわかるコードにできます。

int64 start = cv::getTickCount();

// 何かの処理

int64 end = cv::getTickCount();
double elapsedMsec = (end - start) * 1000 / cv::getTickFrequency();
std::cout << elapsedMsec << "ms" << std::endl;

なお、std::ostreamへの出力のオペレータが定義されているので、直接TickMeterオブジェクトを投げることもできます。"12.345sec" のような形式で、秒数が表示されます。

std::cout << meter << std::endl;
続きを読む

JavaScriptのコンピュータビジョンライブラリ「jsfeat」を試す

jsfeatは純粋にJavaScriptのみで動作するコンピュータビジョンのライブラリです。

以下がプロジェクトのサイトです。いわゆる基本的な画像処理、線形代数、特徴点抽出などなど色々とサポートしており、期待のプロジェクトです。
http://inspirit.github.io/jsfeat/
https://github.com/inspirit/jsfeat

「このプロジェクトの目標は、最先端のコンピュータビジョンアルゴリズムを実装することで、JavaScript/HTML5の可能性を探ること」だそうです。コンピュータビジョンの研究者としてはここは目的と手段を逆に捉えるところだと思いますが、私は開発者志向なので、この姿勢は大変共感できるところです。

実際のところ触ってみて、思ったよりも精度よく、かつなかなか高速に動作し、十二分に最近のWebテクノロジの進展を感じたところです。
相当苦戦中ですが、ごく簡単な使い方をまとめておきます。

なお、本記事で作った実際に動作するサンプルは、以下からお試しください。

続きを読む

OpenCV(2.4.8)による新しいノイズ除去 ざっくり精度調べ

最近のOpenCVには、以下のような新しいフィルタ処理の関数が追加されています。

この関数がどれくらい使えるものなのか、サクッと試してみました。あまり学術的に正確でないかもしれないですが、ご容赦ください。間違っていたら教えてください。

続きを読む