OpenCV 2.1の関数 CとC++の対照表 (未完)

OpenCVの関数の利用は、これから徐々にC形式からC++形式へと移行していく感じがします。今までC形式の関数に慣れ親しんだ人がC++でやろうとしたとき、大抵は関数の名前が似ていてすぐわかるのですが、全然違うものもあり、そもそも対応するものが無かったり…

あみだくじ

ある人の課題を手伝ったのでメモ。下のあみだくじで、「上の 1, 2, 3, 4, 5 がそれぞれ下の同じ数字に行くように横線を引きなさい」という問題でした。パッと見で全然わからなかったのですが、線形代数の問題とのことで、置換とか互換とか、そのあたりの「対…

Ubuntu 10.04 で Mono 2.63 を使う

Mono2.6 は C#4.0 が(不完全ながら)サポートされているようなので、Ubuntu 10.04 (Server Edition) にて試そうと思いました。しかし、 $ sudo apt-get install mono-develで導入されるのは今のところ mono2.4 です。こんなときはソースからがんばってビルド…

memcpyをC#で

C#

自分がC# (.NET Framework) を使っていて一番の不満かもしれないことの一つに、memcpy (CopyMemory) が無いことが挙げられます。普通はCopyMemoryをDllImportすれば解決ですが、Linux等への移植性まで考えるとWin32APIを使うわけにはいきません。以下では、D…

OpenCvSharpをつかう その13(導入時のエラーについて)

13回目にして今更導入時の不具合とはなんとも変な話ですが、OpenCvSharpが動かないというケースを時々耳にします。はっきり聞いているわけではないのでよくわからないのですが、わかる限りの解決策を書いておきます。どうやらBadImageFormatExceptionが多い…

Go言語からC言語の関数を呼び出す

Go

随分久しぶりの更新です。どうにか進路は決まったらしいです。 さて、つい最近登場し注目を集めたGo言語ですが、C言語のライブラリをリンクして呼び出せる機能があり、この機能を使えば、Cで書かれたライブラリのGoラッパー(Goバインディング)が作れます。わ…

OpenCvSharpをつかう その12 (ラベリング)

【注意】 この記事の内容は古く、最新のOpenCvSharpでは動作しません。記録としてあえて残しますが、ラベリングについては以下の記事を参照してください。 http://schima.hatenablog.com/entry/2014/01/19/120540 その1 その2 その3 その4 その5 その6 その7…

多次元配列の速度比較

C#

行列のような2次元配列のデータをC#上で表現するとき、それにはいくつか方法があります。それぞれの処理速度を比べてみます。

デザインを変更

2度目のイメチェン(って死語?)。幅が固定ではないものにしようと思いました。 そういえば、結局良いタイトルが思い浮かばず、デフォルトの「Schimaの日記」のままここまできてしまいました。今更変えようとも思いませんが、なんかいい名前付けたかったな…

Windows7のVirtual PCにUbuntu 9.10を入れる

Windows7に搭載された「仮想マシン」の機能は主にXPモードのため使われると思いますが、もちろん他のOSを入れることもできます。公式にサポートしているのはXPやVista, 7ですが、Virtual PC 2004や2007の経験からいえばLinuxもインストールできるはずです。…

OpenCvSharp x64版を公開

64bit版を公開しました。ずいぶんファイルが増えました。なおOpenCV1.1pre向けはそもそも1.1preがあまり64bitに対応していなさそうなので見送っています。(2.0も、まだまだという面はあります。)http://code.google.com/p/opencvsharp/downloads/list 去年か…

OpenCV 2.0 でのhighguiの新しい関数 不完全一覧

以前にcvについて新しく増えた関数の一覧を書きました。http://d.hatena.ne.jp/Schima/20090911/1252661453今回はhighguiについてもまとめておきます。新しく追加された関数や、引数が増えた関数を一覧にしてあります(C++ Interfaceは除く)。例によって正確…

ラッパー用ファクトリ関数でdeleteすると落ちる

以下のように、C++のクラスのインスタンスを作成するため、C#からDllImportで呼び出せるようなファクトリ関数を作ってあるとします。 #define EXTERN(type) extern "C" __declspec(dllexport) type __cdecl EXTERN(std::vector<int>*) vector_new() { return new </int>…

size_tのマーシャリング

C C# C++

以下のようなCの構造体について、P/InvokeのためにC#で同等の構造体を定義するとします。 typedef struct Hoge { size_t size; int x; }Hoge; 32bit環境に限れば、size_t は普通 unsigned int ですから、C#では以下のようになります。 [StructLayout(LayoutK…

OpenCvSharpをつかう その11(画像のサイズ変更)

その1 その2 その3 その4 その5 その6 その7 その8 その9 その10 cvResizeを用いた拡大処理のサンプルです。詳しい解説はありません。

twitterを公開にしました

かれこれ2年半以上protectedだったので勇気がいりますね。 http://twitter.com/Schima

IntPtrが示すバイト列のポインタをGZipStream/DeflateStreamで圧縮・展開する

C#

.NET Frameworkでは、System.IO.Compression.GZipStreamやSystem.IO.Compression.DeflateStreamクラスを用いて、データを圧縮・展開することができます。この2つのクラスは全く同じように使えるため、以下ではGZipStreamで話を進めます。 以下のコードは、指…

OpenCvSharpをつかう その10 (Star Detector)

その1 その2 その3 その4 その5 その6 その7 その8 その9 このところOpenCvSharpの使い方というよりはただのOpenCV 2.0の新機能紹介になっているこのシリーズですが、今回はStar Detector(日本語だとStar検出器?)のサンプルを作ってみたのでご紹介します。S…

OpenCvSharpをつかう その9 (MSER)

その1 その2 その3 その4 その5 その6 その7 その8 だんだんいい加減になっているこのシリーズですが、MSERのサンプルを作ってみたのでご紹介します。MSERの関数はOpenCV 2.0で追加されました。

OpenCvSharpをつかう その8 (LSH)

その1 その2 その3 その4 その5 その6 その7 突然レベルが急上昇している気がしますが、LSHのサンプルを作ってみたのでご紹介します。LSHの関数はOpenCV 2.0で追加されました。

"VideoInputSharp"をつくってみた

オープンソースプロジェクト第二弾。http://code.google.com/p/videoinputsharp/videoInputの.NET Framework向けラッパーです。videoInputというのは、DirectShowによるビデオキャプチャを容易にできる、C++向けライブラリです。Windows限定なのでラッパーは…

Visual Studioのユーザー キーワードを有効にする

Visual StudioのC++のIDEでは、intやcharといった標準のキーワードがハイライトされて色が付きます。実はそのほかの任意のキーワードについても、設定を行うことでハイライトが可能です。

OpenCV2.0対応版OpenCvSharpを公開

気付いた範囲でOpenCV2.0で増えたcvの関数を追加しました。http://code.google.com/p/opencvsharp/downloads/listOpenCV2.0をインストールするとbinディレクトリには「libcv200.dll」といったDLLが置かれていますが、OpenCvSharpはこれらは読み込みに行きま…

16ビット画像を生成する

訳あって1画素16ビットのグレースケール画像が入り用になりました。生成できるフリーソフトは何かしらあるとは思いますが、今回はこれをOpenCVで生成しようと考えました。

OpenCV2.0でcvの関数がおかしい?

C#からOpenCV2,0をDllImportで呼び出してみたところ、AccessViolationExceptionが発生しました。 static class Program { [DllImport("libcxcore200")] extern static CvSize cvGetSize(IntPtr arr); [DllImport("libcxcore200")] extern static IntPtr cvCr…

OpenCV2.0.0をビルドする

早速Visual Studioの環境設定をするか・・・と思ったのも束の間、libディレクトリにあるライブラリファイルがこんなことになっていました。.a なのでUnixのスタティックライブラリでしょうか。ということはWindowsでは使えないので、自分でOpenCVをコンパイ…

OpenCV2.0.0リリース

延びに延びていましたがようやく出ました。http://sourceforge.net/projects/opencvlibrary/やはりバージョン番号は1.2ではなく2のようです。 ぼちぼちOpenCvSharpも2.0.0対応に向けてがんばりますか・・・・

PLAYSTATION Eye を.NET Frameworkから使う

PLAYSTATION Eye について PlayStation3用のカメラとして、「PLAYSTATION Eye」というものがあります。PLAYSTATION Eye(CEJH-15001)出版社/メーカー: ソニー・コンピュータエンタテインメント発売日: 2008/07/24メディア: Video Game購入: 4人 クリック: 110…

Twitterアカウント作成

OpenCvSharpの更新履歴というのは全然記録しておらず、コミットログだけが頼りだというひどい状況です。遅ればせながら、以下のアカウントに日々の更新を書き連ねていくことにしました。http://twitter.com/OpenCvSharpTwitterもログはあまり遡れないサービ…

cvRedirectError復活!

OpenCV 2.0 betaにてcvRedirectErrorが使えなくなっていた件ですが、revision2170〜2171にて修正された模様です。いやーよかった。

OpenCvSharpをつかう その7 (WindowsFormsで動画の再生)

その1 その2 その3 その4 その5 その6 OpenCVのhighguiではなくWindowsFormsのウィンドウ上で動画を再生したいということは多いようです。OpenCvSharpに限っても、以下のページなどで試みられています。http://d.hatena.ne.jp/Guernsey/20081207/1228649067 …

Debugger Visualizerを自作する(値の書き換え)

C#

Debugger Visualizerは、ただ表示するだけではなく、値の編集も行うことが出来ます。今回は、System.Text.StringBuilderの保持する文字列の表示・編集が可能なDebugger Visualizerの作成の方法の紹介です。ちなみにStringBuilderはSerializableです。以下は…

Debugger Visualizerを自作する (Serializableではないクラスの場合)

C#

今回は System.Security.Cryptography.RijndaelManaged に対するDebugger Visualizerを自作することを考えます。暗号化・復号化に必要なIVとKeyのバイト列の値を16進数表記で表示させるという特に面白くもなんともないサンプルです。このクラスはSerializabl…

OpenCV2.0 betaのPythonバインディングを試す

OpenCVにはPythonから扱うためのラッパーが標準で添付されています。SWIGで機械的に作られている感じですが、いずれにしろラッパー開発者として知っておかないわけにはいきません。

cvRedirectErrorはOpenCV2.0では使えない?

先日実装したOpenCvSharpのエラーハンドリング機能ですが、早くも暗雲が立ち込めております。

cvLoadのエラーについて

OpenCV 1.1preでは、cvLoadは使う前にあらかじめcvの関数を呼んでおかないとエラーになるようです。http://www.codeproject.com/KB/cs/Intel_OpenCV.aspx?msg=2784187 http://www.openframeworks.cc/forum/viewtopic.php?f=10&t=1853よって、何かcvの関数、…

OpenCV 1.2(2.0?) でのcvの新しい関数 不完全一覧

OpenCVの新しいバージョンが、ベータ版ですがリリースされたようです。http://sourceforge.net/projects/opencvlibrary/しかしバージョン番号がよくわかりません。上のSourceForgeのダウンロードページでも、ボタンには2.0とありますが、ファイル名やインス…

エラーハンドリングに対応

cvRedirectErrorに設定するコールバック関数を独自に設定することで、エラーの際に従来のようなメッセージボックスによるエラーメッセージの表示ではなく、.NET Frameworkの例外が投げられるようになりました。

エネループバイク CY-SPA226 レビュー

この前ハリヤを買う時に、実家の母にも電動アシスト買ったらどうかとそそのかしまして、結局二人同時に買うことにしました。この度実家に帰って試し乗りしてみた感触をハリヤと比較して書いてみます。メーカーのサイト: http://products.jp.sanyo.com/enelo…

Debugger Visualizerを自作する

C#

Visual Studio では、ブレークポイントで止めた時に以下の図のように変数の中身を視覚的に見ることができます。ここで見られるのは普通は数値や文字列ぐらいに限られます。しかし例えばUriクラスならば、そのUriの示す先のWebページが見られたりしたら、(実…

OpenCvSharpをつかう その6 (PictureBoxIpl)

その1 その2 その3 その4 その5 ずいぶんと前回から間が空いてしまいました。今回は、フォームに張り付けてIplImageをすぐに表示できるPictureBoxIplコントロールの紹介です。即席で作ったものなのであまり作りこんでいないのですが、表示させる際にIplImage…

Panasonic ハリヤ (BE-ENH67) レビュー

http://cycle.panasonic.jp/products/electric/ENH.htmlずっと電動アシスト自転車欲しい欲しいと思って構想4年、ついに買ってしまいました。通学や散策に使おうと思ってます。今思うと、こちらとかこちらにもあるように、20ちょっとのガキんちょが乗るには過…

OpenCvSharpExternのバイナリを作る

Linux等のWindows以外の環境でOpenCvSharpのMachineLearning(機械学習)やBlob(ラベリング)を利用するためには、ネイティブで書かれたラッパー「OpenCvSharpExtern」を自力でコンパイルしなければなりません。この度、CMakeによって多少楽にできるようにしま…

はてなのCAPTCHAのクラック

今度研究室でOpenCV勉強会というのをすることになったのですが、そのネタにと思い、id:yaneurao:20090802 を参考にはてなの画像認証をクラックしてみました。CAPTCHAの画像をHTMLを解析して自動収集するところから書き始めたりして、全然30分では終わらず3時…

Parallel.Forの2重ループから脱出

C#

通常のforであれば、このような場合にはgotoが未だに健在です。しかし、以下のコードは、まあいかにもダメそうですがやはりコンパイルできません。delegateを作った時点ではラベルが認識されていないようです。 Parallel.For(0, 20, delegate(int i) { for (…

Google CodeのWikiが編集・削除できない時の対処

結構前から、OpenCvSharpのGoogle Codeで、Wikiを編集しようとしても500 Server Errorが出て何もできないという状態が続いていました。かくなるうえは削除、と思っても、それも Update Collision が出るため、できませんでした。

Mono対応版リリース

OpenCvSharp.dllの部分についてはすべてDllImportかC#のみで実装し直したため、OpenCvSharpで書かれた大抵のプログラムは、そのままバイナリをLinux等へ持っていくだけでMonoで動作します。きっと。 MachineLearningとBlobについてはOpenCvSharpExtern.dllを…

Visual C++ Redistributable

リリースしてあるものではなくてSVNの方の最新版の話ですが、当方で試してみた限りでは、2005 SP1が無い場合はBadImageFormatExceptionが出ました。2008 SP1の方は、アンインストールしても動いたので、たぶん要らないような気がします。ということで、以後…

Ubuntu9.04 + Mono2.4 で動作確認

多大なる苦労の末、ようやく動きました。動かすまでの手順をものすごく大雑把に書けば、以下のようになります。 MonoやOpenCVをインストール OpenCvSharpExtern.dllはWindowsバイナリなので、LinuxバイナリであるlibOpenCvSharpExtern.soをつくる libcv.so.2…

mono対応に書き換え中

またまた内部仕様が変わりまくりです。既にコア部分の対応は大体終わっていて、windows版のmono2.4では動作を確認できました。残るはMLやBlobの部分で、この辺りはC++/CLIで実装してあるので、これを全部やめてC#で書き直さなければなりません。しかし、ここ…