読者です 読者をやめる 読者になる 読者になる

C#で3次元グラフを表示する ILNumerics

ILNumericsは.NETで使用可能な数値計算等のライブラリである.グラフ表示機能も備わっているので,それを使ってC#のWindowsフォーム上に3次元グラフを表示する. ILNumericsのインストール 現在最新バージョン(4.x系)のILNumericsは14日間のトライアル版以…

Python+OpenCVで特徴量記述・アルゴリズムまとめ

Python+OpenCVで画像の特徴点の特徴量を記述する.OpenCV2.4.9およびOpenCV3.0 alphaについて使用できるアルゴリズムをまとめる.Python+OpenCVで特徴点抽出・使えるアルゴリズムまとめ OpenCV2.4.9と3.0 alpha - whoopsidaisies's diary の続き. 環境 Wind…

C#で画像をWavelet変換 Accord.NET

C#で画像のWavelet変換を行う.コンピュータビジョン等の.NET向けのオープンソースのライブラリであるAccord.NET Frameworkを使う. Accord.NETのインストール NuGet経由でインストール可能.プロジェクトを右クリックして「NuGetパッケージの管理」を選択す…

Visual Studioでデバッグ時にOpenCVのMat等の画像を表示できるプラグインが便利

OpenCV公式サイトのNEWSを見てたら「Image Watch plugin for Visual Studio」というのを見つけた.使ってみたら便利そうだったのでメモ.もっと早く知りたかった.わざわざimshowとかのコードを追加してウィンドウを表示させなくてもMatの中の画像を確認でき…

opencvで文字認識その1 Tesseractラッパ

OpenCV3.0系から文字認識モジュールが搭載されるようなので使ってみる.現状の3.0 alphaや3.0 betaでは,文字認識モジュールはメインレポジトリに組み込まれておらず開発用レポジトリのopencv_contribの方に入っているようで,opencv_contribと一緒にOpenCV…

C#でGISデータ(shpファイル)を開く DotSpatialによる方法

DotSpatialは.NET向けのオープンソースの地理情報システムライブラリである.これを使ってGISで用いられるshpファイル(とセットのshxファイルとdbfファイル)を読み込む. DotSpatialのインストール Nuget経由でインストール可能.プロジェクトを右クリック…

PowerPointのオートシェイプで好きな関数の曲線を作る C# NetOfficeによる方法

sin(x)/xのオートシェイプオートシェイプできれいな波形を作りたいときがたまにあるのだけど,C#を使って上の画像みたいにsin(x)/xのオートシェイプをわりときれいに作れたので手順をまとめる.試した環境はPowerPoint2010とVisual Studio 2013.バージョン…

OpenCVでDeepFlow

opencv_contribを見てたら,DeepFlowというオプティカルフローのアルゴリズムが実装されていたので勉強ついでに使ってみる. DeepFlow DeepFlowはコンピュータビジョンの分野では有名な国際学会ICCV2013でWeinzaepfelらによって発表されたアルゴリズムである…

OpenCV3.0.0-alphaの特徴抽出・マッチングまとめ

OpenCV3.0.0-alphaのパッケージが公開されたと話題になっていたので使ってみる.Change Logを見るとAKAZE特徴量が組み込まれている. AKAZE特徴量の紹介と他特徴量との比較 - 遥かへのスピードランナー によるとAKAZE特徴量は,以前のOpenCVでもakaze-opencv…

C#でDeep Learning(Accord.NETによる方法)

流行りのDeep LearningをC#で試してみる.機械学習やコンピュータビジョン,信号処理等の.NET向けのオープンソースのライブラリであるAccord.NET FrameworkにDeep Learningが実装されているのでそれを使う.Deep Belief Networks(DBN), Deep Neural Networks…

C#でSVM libsvm.netによる方法

SVMのライブラリであるLIBSVMを.NETプロジェクトで使えるようにするlibsvm.netを動かしてみる. libsvm.netのインストール NuGet経由でインストール可能.プロジェクトを右クリックして「NuGetパッケージの管理」を選択する.オンラインから「libsvm.net」を…

C#でExcelファイルを作成・グラフを挿入する NetOfficeによる方法

C#からExcelファイルを作って,グラフも挿入したい.以前,以下の記事でClosedXmlというライブラリを使ってC#から簡単にExcelファイルを作る方法を紹介したが,グラフの挿入が出来ないのがグラフの挿入が出来ないのが気になっていた. C#でExcelファイルを作…

C#でグラフを描く OxyPlotのFunctionSeriesによる方法

.NETフレームワーク用のグラフ描画ライブラリであるOxyPlotを使ってグラフを描く. その中でもFunctionSeriesクラスを使って与えられた関数のグラフを描く方法を記す.OxyPlotはWindows Formアプリケーションだけでなく,WPF,Silverlight,Windows8等様々な…

C++でLINQライクな処理(LINQ for C++による方法)

LINQ for C++ LINQは.NET Framework3.5から組み込まれた機能で,C#等の言語でSQLのデータベース操作のようなことを可能とする.「C# is LINQ」と言う方までいほどに便利な機能.しかし,C++/CLIはLINQに対応する予定はないとのこと.そこで,LINQに似た機能…

C# 名前付きの色一覧を配列に取得してRGB値をDataGridViewに表示する

Color構造体 .NET FrameworkのColor構造体はRGB値で色の指定もできるが,あらかじめRGB値が指定されていて名前を指定して使える色がある.「Color.Red」とか「Color.Green」といった感じで使うことが出来る.本記事では,名前が付いた色の一覧を取得してColo…

C#でOpenCVを使う(C++/CLIによる方法)

OpenCVラッパクラス C#でOpenCVを手軽に使うにはOpenCvSharpをつかう その17(NuGetで導入) - schima.hatenablog.com C#でOpenCVを動かす~NuGetでOpenCV.Netをインストール - whoopsidaisies's diaryのページのように,NuGetからC#ラッパをインストールして…

C#でAI,PSD,EPS,SVG,PDF等の画像ファイルを開く(ImageMagickのC#ラッパMagick.NETによる方法)

Magick.NET 100種類以上の画像を操作したり表示したりできるライブラリImageMagickのC#ラッパMagick.NETを使って,C#でAI,PSD,EPS,SVG,PDF等の画像ファイルを開く. インストール NuGet経由でインストール可能.プロジェクトを右クリックして「NuGetパッ…

C#でDICOMファイルからボリュームレンダリング ActiViz(VTK)による方法

C#でActiVizを使って,DICOM形式画像の連番ファイルを読み込みボリュームレンダリングにより3D画像を生成・表示する. ActiViz ActiVizは,3Dコンピュータグラフィックスの可視化ライブラリVTK(The Visualization ToolKit)のC#ラッパである.NuGetからイ…

C#で3Dモデル表示(VTKのC#ラッパActiVizによる方法)

ActiViz C#で3Dモデル表示する方法はたくさんあると思うが,今回は,3Dコンピュータグラフィックスの可視化ライブラリであるVTK(The Visualization ToolKit)の,C#ラッパ「ActiViz」を使った方法について書く.ActiVizおよびVTKの良さそうな点を以下にざっ…

開発中のOpenCV 3.0でPerfumeの3Dデータを表示する

OpenCV 3.0.0-dev Vizモジュール OpenCV 3.0の開発ブランチを見ていたら,Vizという3D表示用のモジュールがあったので使ってみる.3D表示には,Point Cloud Libraryとかでも使われているVTKというオープンソースのライブラリが使われている. 環境 Windows 7…

C# ComboBoxにenumの値を表示してコントロールのプロパティにバインドする

例として,PictureBoxSizeMode列挙体のメンバをコンボボックスに表示し,選択された値がピクチャボックスのSizeModeプロパティに設定されるようにする. comboBox1.DataSource = Enum.GetValues(typeof(PictureBoxSizeMode)); comboBox1.DataBindings.Add(ne…

C# アンチエイリアシングしないPicturebox

画像がぼやける 下の画像みたいに,10x10画素の画像を拡大してPictureBoxコントロールに標示させたい. そのまま表示させようとすると,以下みたいにアンチエイリアシングされてぼやけてしまう. 「画像を縮小するとピクセルにグラデーション?がかかる」に…

OpenCVで背景差分

背景差分 固定カメラで移動物体の検出をするのに有効な手法.OpenCV2.4.7では混合正規分布(Mixture of Gaussian Distribution, MoG)によるアルゴリズム,Godbehere,Matsukawa,Goldbergによるアルゴリズム(GMG)が用意されているので試してみる. サンプル…

C#でExcelファイルを読み込む ClosedXmlを使用

ClosedXML C#でExcelファイルを読み込む.以下の記事で紹介したClosedXMLを使用する.インストールはNuGetから可能. C#でExcelファイルを作成する ClosedXmlを使用 - whoopsidaisies's diary サンプルコード ファイルを読み込んで,セルの値と数式を表示す…

C#で文字認識(tesseract-ocrのラッパを使う方法)

tesseract-ocr tesseract-ocrはオープンソースのOCR(光学文字認識)エンジン.60以上の言語に対応しており,日本語の文字認識も可能. A .Net wrapper for tesseract-ocr tesseract-ocrはapiが用意されているが,そのC#ラッパー「A .Net wrapper for tesser…

OpenCVで密なオプティカルフローを計算する

オプティカルフロー 動画から密なオプティカルフローの計算を行う.SimpleFlowアルゴリズムによるオプティカルフロー,TV‐L1オプティカルフロー,Farnebackのオプティカルフロー,Broxのオプティカルフロー,Lucas-Kanade法によるオプティカルフロー等によっ…

OpenCVでcv::Algorithmのパラメータを表示する

OpenCVのcv::Algorithmのパラメータの名前・型・値を表示する. cv::Algorithm OpenCV2.4から導入された基底クラスcv::Algorithm.以下の引用のように,色々と便利. 新しい基底クラス cv::Algorithm の導入.これは「些細なものではない」全てのOpenCVの機…

C#で数式処理(xFunc.Maths)

xFunc.Maths グラフ描画を行うソフトxFuncの数式処理部分のライブラリxFunc.Mathsが公開されているので利用する.数式を記号的に扱うことができ,微分もできる.NuGet経由でインストール可能.ただし,NuGetで公開されているバイナリは.Net Framework 4.5.1…

C# Chartコントロールでクリックした場所に点をプロットする

概要 Axis.PixelPositionToValueメソッドと,ChartコントロールのMouseClickイベントを使う. Chartコントロールの追加 Windows フォームアプリケーションを作成し,Chartコントロールを配置する.Chartコントロールはツールボックスの「データ」カテゴリの…

OpenCVで画像の特徴抽出・マッチングを行う

概要 OpenCVでは特徴点抽出,特徴記述,特徴点のマッチングついて様々なアルゴリズムが実装されているが,それぞれ共通のインターフェースが用意されている.共通インターフェースを使えば,違うアルゴリズムであっても同じ書き方で使うことができる.特徴点…

OpenCVをVisual Studioで動かす(NuGetによりインストールする方法)

動作可能な条件 Visual StudioのNuGetパッケージマネージャでOpenCVをインストールして動作させる.Visual Studioのバージョンごとに方法をまとめる. バージョン 動作 Visual Studio Professional 2013 ○ Visual Studio Express 2013 for Windows Desktop ○…

C#でCSVファイルにデータを書き込む

CSVファイルからの読み込みは以下の記事 C#でCSVファイルからデータ読み込む(StreamReaderクラスとString.Splitメソッドによる方法) ソースコード 以下,ソースコード.appendのオン・オフによってファイルに追記するか新規作成するか選択できる. private…

OpenCVで超解像度画像を作成する

OpenCVのSuperResolutionクラス OpenCVの2.4.5あたりからSuperResolutionクラスという超解像度処理を行うモジュールが追加されたので,それを使う.現在Nugetでインストール可能なOpenCVのバージョンは2.4.7なのでSuperResolutionクラスが使用可能である.プ…

C#で顔検出をする(Accord.NETによる方法)

Accord.NET Frameworkのインストール C#で画像からの顔検出を行う.Accord.NET Frameworkで提供されているメソッドを使う.Accord.NET Frameworkは,機械学習や統計,コンピュータビジョン等の機能を.NETに提供するフレームワーク.「C#でWEBカメラを使う AF…

C#で平均・分散・標準偏差を計算する(Math.NET Numericsによる方法)

Math.NET Numericsのインストール .NET向けの数値計算ライブラリであるMath.NET Numericsを使う.Nugetからインストール可能である.プロジェクトの右クリックメニューから「Nugetパッケージの管理」をクリックし,出てきたダイアログで「Math.NET Numerics…

C#でキーボード操作する(SendKeysクラスによる方法)

SendKeysクラス キーボード入力をC#で自動化したい.SendKeysクラスのSendKeys.Sendメソッドを使う.SendKeys.Sendメソッドは,アクティブなアプリケーションにキーストロークを送ることができる. SendKeys.Send("test"); と書けば,"t","e","s","t"と順…

C#でグラフを描く(Chartコントロールによる方法)

Chartコントロールの追加 Visual StudioのChartコントロールを使う.Windows フォームアプリケーションを作成し,Chartコントロールを配置する.Chartコントロールはツールボックスの「データ」カテゴリの中にある. ソースコード sin波とcos波を描画するサ…

C#でCSVファイルからデータ読み込む(StreamReaderクラスとString.Splitメソッドによる方法)

ファイルへの書き込みは以下 C#でCSVファイルにデータを書き込む ソースコード ファイルからの読み込みにはStreamReaderクラスを,文字をカンマごとに区切るのにはString.Splitメソッドを使用する.Nugetで検索したら便利そうなライブラリはたくさんあるし,…

C#でWEBカメラを使う AForge.NETによる方法

概要 AForge.NET Frameworkを使う.AForge.NET Frameworkは,コンピュータビジョンとか人工知能の分野の開発者・研究者向けのフレームワーク.DirectShowでビデオを読み込むクラスが実装されているので,それを使う. 手順 「Windows フォーム アプリケーシ…

C#でExcelファイルを作成する ClosedXmlを使用

概要 C#でExcelファイルを出力したい.タイトルそのまま.「ClosedXML」というライブラリを使う. COMによる方法とかOpen XML SDKによる方法とかあるが,どうも面倒くさい手順が多い感じなので,簡単そうなClosedXMLを選択. インストール Nugetパッケージが…

OpenCVをVisual C++で簡単に使う

Visual Studio 2012以外の人は,バージョンごとに手順をまとめた以下の記事を参照. OpenCVをVisual Studioで動かす(NuGetによりインストールする方法) - whoopsidaisies's diary 何のための記事なの Visual C++でOpenCVを簡単に使う方法.OpenCVにつきも…

C#でOpenCVを動かす~NuGetでOpenCV.Netをインストール

2013/12/27追記) 2013/12/15にOpenCvSharpにも使いやすいNuGetパッケージが公開された.この記事で紹介するOpenCV.NetよりもOpenCvSharpのほうがおすすめ.以下のページに詳しい解説があるので参照. OpenCvSharpをつかう その17(NuGetで導入) - schima.hat…

C# CopyFromScreenでフォームの枠内をキャプチャする

Windows フォーム アプリケーションでタイトルバーと枠以外透明なフォームを作り,枠内をキャプチャする機能を付ける. CopyFromScreenメソッド 画面をキャプチャする方法はいくつかあるようだが,ここでは.Net Framework 2.0以降で提供されている,Graphics…

C# Windows フォーム アプリケーションでフォームのクライアント領域を透明にする

タイトルバーと枠だけ残して,あとは透明なフォームを作りたい.フォームのTransparencyKeyプロパティをいじってやればよい. this.TransparencyKey = this.BackColor; TransparencyKeyプロパティで指定した色が透明になる.BackColorプロパティはフォームの…

C#で指定した位置をクリックする

マウスの移動とクリック マウスの移動にはSetCursorPos関数,クリックにはmouse_event関数を使う.どちらの関数もUSER32.dllに実装されているため,DllImport属性を使用して宣言する.DllImport属性は,System.Runtime.InteropServices名前空間にあるのでusi…