OpenCvSharpをつかう その17(NuGetで導入)

前々からの野望だったNuGetパッケージを、このたび公開しました! その1で紹介した方法よりもずっと簡単に使い始めることができるはずです。OpenCVの事前インストールも不要です。まだ作りたてほやほやなので変更されるかもしれませんが、ひとまずの使い方紹…

ImageProcessor を使う

C#

NuGetパッケージに ImageProcessor というライブラリがあります。名前は大仰なのに機能は少ないものの、純粋なC#実装で(GDI+)、簡単にちょっとした画像処理ができるので、使う場面によっては有用だと感じました。以下、ImageProcessor(1.7.1.1)の使い方の紹…

TortoiseGitをGithubの二段階認証に対応

Githubのログインを二段階認証(Two-factor Authentication)に変更したところ、TortoiseGitからpullなどをしようとすると「Authentication failed」するようになってしまいました。これを克服する手順です。

Google APIからGoogle Fusion Tablesに触る

Google Fusion Tablesは、簡単に言うとオンラインで使えるデータベースです。これ、相当すごいと思います。夢広がりまくりです。SQLっぽいクエリを投げて、データを取得したり、追加したりなどなどできます。特にGoogle Mapsとの連携が良くできていますが、…

OpenCvSharpをつかう その16(SVM)

前回の記事に引き続き、SVMです。今回はOpenCvSharpからOpenCVのopencv2/ml.hpp(実装当時はopencv/ml.h)にある機械学習を使います。OpenCvSharpをつかう 記事一覧

RubyでSVMをつかう [rb-libsvm]

近年大人気(?)のSVM[Support Vector Machine]を、Rubyから簡単に使う方法です。SVMのライブラリとしてはlibsvmが著名です。これをRubyから触るためのgemは複数ありますが、ここではrb-libsvmを使いました。環境はDebian wheezy, Rubyのバージョンは1.9.3p19…

積分画像(Integral Image)による、Sauvolaの手法の高速化

先日の記事にて、適応的二値化の一手法であるSauvola[1]の手法について紹介しました。閾値の計算式は単純で、実装は割と簡単です。しかし1ピクセルごとに周囲の平均・標準偏差を求めるのは、結構コストがかかる処理です。これを積分画像(Integral Image)に…

Google Apps Scriptで、Googleカレンダーを調べる

最近個人的にアツいのが、Google Apps Scriptです。Google Docsでオンラインでスクリプトを記述でき、そこで実行してGoogleの様々なサービスにアクセスできたりします。かなり夢が広がります。今後何回か扱っていきたいと思っていますが、まずは簡単な導入の…

OpenCvSharpをつかう その15(適応的閾値処理)

適応的閾値処理 (Adaptive Thresholding) を使うサンプルです。始めからぶっちゃけますと cvAdaptiveThreshold を使え、という話になりますが、本記事はそれだけでは終わりません! OpenCvSharpでは、OpenCV標準では用意されていない適応的閾値処理を、こっ…

ruby-tesseract を使う

このブログ、.NET Frameworkべったりですが、実はわたくし、Ruby歴の方が長いです。 初めてのRuby記事を書きます。フリーのOCRライブラリ「tesseract」をRubyから触れる「ruby-tesseract」の紹介です。Linux(Debian/Ubuntu)という前提です。https://github.c…

OpenCvSharpをつかう その14(Debian wheezyで動かす)

3年ぶりの「OpenCvSharpをつかう」シリーズ再開です! OpenCvSharpをLinuxで動かすことについては、大昔に断片的に書きましたが、最後まで通しで書いてみます。記憶を頼りに書いているので、本当は詰まった箇所が抜けているかもしれません。 その1 その2 そ…

ほげちゃん

今日は本の紹介。この本を知っていますか?ほげちゃん作者: やぎたみこ出版社/メーカー: 偕成社発売日: 2011/06/02メディア: ハードカバー クリック: 5回この商品を含むブログ (15件) を見るあるぬいぐるみのおはなしです。表紙を見ると「なんじゃこりゃ?」…

IntPtr.Add, IntPtr.Subtract

C#

いつの間にこんなメソッドが!.NET Framework 2.0ばかり使っていたので、長いこと気づきませんでした。みんなのつよーい味方、IntPtr構造体に、AddメソッドとSubtractメソッドができていました(どちらもstatic)。また、同じ機能で+と-の演算子としても定義…

はてなダイアリーから移行しました

移行 最近周囲からの再開圧力がほのかに増してきており、2年半ぶりの更新を決意。ついでにはてなブログに移行しました。 手順はすごく簡単です。はてなダイアリーからのリダイレクトまでしてくれます。 http://help.hatenablog.com/entry/import RPGの主人公…

Microsoft Chart Controls を使って東京電力の電力使用状況をグラフ化する

C#

.NET Framework 4から導入されたSystem.Windows.Forms.DataVisualization.Charting名前空間にあるMicrosoft Chart Controlsを使うと、簡単にグラフを作成できます。(.NET Framework 3.5でも、このページから必要なものを落としてきてインストールすれば使え…

MPOファイルのヘッダを解析しJPEGに変換する

C#

ニンテンドー3DSなどステレオ3Dカメラで撮影したMPO画像ファイルについての話の続きです。このファイルはJPEGが単純に複数枚連結したような構成になっており、先日の記事ではファイルの全バイト中からJPEGの開始数バイト(SOIなど)を探索することで切り分け…

スレッドセーフなIOの扱い

C#

マルチスレッドな処理では、複数のスレッドから1つのリソースにアクセスするときがなかなか厄介です。排他処理を行わないとタイミングによってはおかしくなってしまいます。

エンディアンを指定できるBitConverter

C#

バイト配列から任意のプリミティブ型(int, floatなど)に変換するにあたって便利なのがSystem.BitConverterクラスです。しかしこのクラスは自分の環境におけるエンディアンで処理されてしまいます。おそらく多くの環境はリトルエンディアンですが、この場合ビ…

MPOファイルをJPEGに変換する

C#

ステレオ3Dカメラ搭載のニンテンドー3DSが発売になり、これによってステレオ3Dカメラはいくらか普及するのかもしれません。ステレオということでレンズが2つ付いており、それぞれで撮影された複数の画像が .mpo という拡張子のファイルとなってまとめて保存…

.NET Framework(C#)のLogger

C#

どういうわけか今までログについてあまり考えてきませんでしたが、最近少し需要を感じるようになりました。きっと用意されているはず、と調べると案の定いくつかありました。ごく簡単にまとめておきます。

OpenCV 2.2で変更・追加されたもの (C Interface)

C形式の関数・構造体がOpenCV2.1からどれだけ変わったかをまとめておき、ラッパー開発の指針にしようと思います。例によって多分どこか抜けています。また、C++の方はまとめる気はありません。公式の変更点はこちら。実際のところこちらに全て載っています。…

Windows7のVirtual PCにUbuntu 10.04を入れる

以前に [id:Schima:20091111#1257943149] にて、Ubuntu9.10をWindows7のVirtual PCの仮想マシンとしてインストールする方法をまとめました。ところが、Ubuntu10.xになって以降はそう簡単にはインストールできなくなったようです。昔からVirtual PCと(大抵の…

unmanagedクラスにmanagedなメンバを持たせる

以下のコードはビルドできません。「マネージ 'hoge' をアンマネージ 'Native' で宣言できません。」というメッセージが出ます。 class Native { public: StringBuilder^ hoge; }; managedな変数hogeがGCによって移動された場合に、unmanagedなクラスではそ…

WriteableBitmapの画素をポインタから操作する

WPFには様々なビットマップのクラスがあってややこしいですが、System.Windows.Media.Imaging.WriteableBitmapクラスは低レベルな操作ができるので、他の環境とのやり取りもしやすく私好みです。今回はWriteableBitmapの画素値にポインタで直接アクセスしま…

Visual Studio 2010の標準ツールバーにプラットフォーム選択を表示させる

自分の環境では、従来のバージョンでも表示されていましたし、VS2010でも表示されていたと思うのですが、この度OSごと再インストールしたら表示されなくなってしまいました。 以前は下図のように「x86」という部分が表示されていました。ここでプラットフォ…

Roland SK-500 を Windows7 64-bit に導入する

突然の話でしたが、ありがたいことにもらいうけてしまいました。http://www.roland.co.jp/products/dtm/SK-500.htmlドライバは一見Windows 7のものは用意されていないのですが、Vistaのものでなんとかなります。その導入の備忘録です。

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…