OpenCvSharpはもともとC言語のOpenCV 1.0 APIを対象に作っておりました。以来6年経ち、C++ APIが充実し主流になってきたため、そのサポートを進めています。
ある程度は仕様が固まってきたので、使い方をご紹介していこうと思います。今回は大まかな概観です。2014/3/28リリース版をベースに書いています。
続きを読む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;続きを読む
jsfeatは純粋にJavaScriptのみで動作するコンピュータビジョンのライブラリです。
以下がプロジェクトのサイトです。いわゆる基本的な画像処理、線形代数、特徴点抽出などなど色々とサポートしており、期待のプロジェクトです。
http://inspirit.github.io/jsfeat/
https://github.com/inspirit/jsfeat
「このプロジェクトの目標は、最先端のコンピュータビジョンアルゴリズムを実装することで、JavaScript/HTML5の可能性を探ること」だそうです。コンピュータビジョンの研究者としてはここは目的と手段を逆に捉えるところだと思いますが、私は開発者志向なので、この姿勢は大変共感できるところです。
実際のところ触ってみて、思ったよりも精度よく、かつなかなか高速に動作し、十二分に最近のWebテクノロジの進展を感じたところです。
相当苦戦中ですが、ごく簡単な使い方をまとめておきます。
なお、本記事で作った実際に動作するサンプルは、以下からお試しください。
最近のOpenCVには、以下のような新しいフィルタ処理の関数が追加されています。
この関数がどれくらい使えるものなのか、サクッと試してみました。あまり学術的に正確でないかもしれないですが、ご容赦ください。間違っていたら教えてください。
続きを読むおかげさまで好評いただいている(?)このシリーズ、かなり記事が増えてきました。
各記事にリンクを羅列するとすごく長くなってきたので、記事一覧ページを作っておきます。
または、以下からは本ブログの全てのOpenCvSharp関連記事が見られます。
http://schima.hatenablog.com/category/OpenCvSharp
その1が2009年。OpenCvSharp自体の開発は2008年夏ごろからです。まさかこんなに長年開発を続けるとは。その1のスクリーンショットを見るとVisual Studio 2008、歴史を感じます。
出るとか出ないとか噂の公式.NETバインディングに超期待。足を洗う日が来るでしょうか。
GitHubリポジトリはこちらです。皆様の温かいご支援ご協力、要するに pull request をお待ちしております!
https://github.com/shimat/opencvsharp