透視変換とは 変換前後の4点を指定し 画像を変換することです。画像の回転が3点を指定して変換するのに対し4点になるわけです。 OpenCvでは次の手順で行います。 1)変換前後の座標をもとにgetPerspectiveTransformで変換行列を求める。 public static Mat getPerspectiveTransform(Mat src, Mat dst) src : 変換前の4点を示す マトリックス CvType.CV_32F dst : 変換後の4点を示す マトリックス CvType.CV_32F src_mat およびdst_matのCv_TypeはCV_32F以外はエラーになります。 2)変換行列用いて warpPerspective で画像を変換する。 static void warpPerspective(Mat src, Mat dst, Mat M
A simple to use opensource C++ / Java / AS3 library (with examples) for openFrameworks, Cinder, Processing and Flash, for solving and displaying real-time 2D cell-based fluid simulations based on Navier-Stokes equations. The library provides a very simple to use API with many convenience methods for adding and getting forces and colors at any position. This ease of use has made the library incredi
オブジェクトのないメンバ これまで、クラス型のオブジェクトには全てのメンバが割り当てられました オブジェクトごとにメンバ変数が割り当てられ、メンバ変数はオブジェクト間で関係ありません しかし、あるクラスの全てのオブジェクトが 一つの変数を共有したいとすれば、困ります グローバル変数を使うこともできますが、それはオブジェクト指向プログラムに反した行為です そのような場合は、静的メンバ変数を用います 静的メンバ変数は、全てのオブジェクトが共有するクラス内グローバル変数と呼べます これは、オブジェクトごとにコピーが作られるようなことはなく つねにクラスに一つしか存在しないメンバなのです 静的メンバ変数の宣言には static キーワードを使います static var; var は、静的メンバ変数を宣言します ただし、この時点ではまだ変数は存在していません 静的メンバ変数は、クラスの外で変数を再
C++ 連想配列クラス std::map とは std::map とは C++ で標準に使用できる便利な連想配列クラスでござるぞ。 「連想配列クラス」とは検索可能なキーと、キーに対応する値の組(ペア)を要素とするコンテナクラスで、 保持している要素から、キーを指定して値を高速に取り出せるクラスのことだ。 例えば、string 型の人名と int 型の年齢を組にした要素を保持しておくと、名前をキーにして年齢を高速に取得することができる。 名前から年齢への写像(mapping)のようなものなので map というクラス名を持つ。 ※ タイトルのところにある画像のように地図(map)という意味ではない。 ちなみに、単純な配列を使ってキーから要素を取得する処理時間は O(N) であるが、map は O(log N) と高速である。 これは map クラスが2分木(実装に依るけど、たいていは赤黒木)で
プログラミングBのページへ戻る その前に,typedef 構造体とは 構造体の宣言 メンバ参照(直接参照) サンプルプログラム1 構造体の代入 構造体のサイズ 構造体の配列 サンプルプログラム2 構造体をメンバにする構造体 関数と構造体 構造体型の関数引数 構造体型の関数戻り値 構造体ポインタ型の関数引数 メンバ参照(間接参照) レポート問題 その前に, typedef typedef を用いると,既に定義されている型に,別の新しい名前をつけて定義することができる(typedef は型(type)定義(definition)を略したキーワードである).その方法は次の通り. typedef 定義されている型 定義する新しい型名; 具体的には次のようにする. typedef int seisu_t; これは, seisu_t という名前の型は int 型であると定義している. この型定義をした
○vectorのソート sort : クイックソートのため、同じ値同士の順序が維持されません stable_sort : マージソート、同じ値同士の順序が維持されます ■intのソート #include <stdio.h> #include <vector> #include <algorithm> #include <functional> int main(){ std::vector<int> data; data.push_back(5); data.push_back(1); data.push_back(2); data.push_back(3); data.push_back(4); std::sort(data.begin(),data.end());//昇順ソート //std::sort(&data[0],&data[5]);//上と同じ意味 {for(int i=0;i
構造体って? C 言語で、いくつかの変数をひとまとまりにしたものを構造体といいます。例えば、下のように struct を使って定義します。 typedef struct Item { int code; /* 商品コード */ int name; /* 商品名 */ int price; /* 価格 */ } ITEM, *LPITEM ; 商品コードと商品名と価格を管理する場合、code, name, price の変数をそれそれ作るよりも商品( Item) でひとまとめすることでプログラムがわかりやすくなります。こういったまとまったデータをレコードともいいます。プログラムが小さいと大げさなように感じされますが、複雑になるにまし、struct のありがたみがわかります。 では C++ の構造体はというと、同じように使えます。C++ はCのソースコードをそのままコンパイルできるようになって
なぜかこの時期に「行列式の値」と「逆行列」を作成するプログラムを毎年書いている気がして、その都度作るのが非常に面倒臭いので、今後も困らないようにアップしておく。 行列式の値の求め方 ・2 次の場合 たすきがけで簡単に解ける。 double a[2][2]={{1,2},{4,-1}}; double det=0.0; det=a[0][0]*a[1][1]; det-=a[0][1]*a[1][0]; printf("%f\n",det); // -> -9.000000 ・3 次の場合 サラスの方法で簡単に解ける。 double a[3][3]={{1,8,9},{-3,2,1},{4,1,5}}; double det=0.0; det=a[0][0]*a[1][1]*a[2][2]; det+=a[1][0]*a[2][1]*a[0][2]; det+=a[2][0]*a[0][1]
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く