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

のんびりしているエンジニアの日記

ソフトウェアなどのエンジニア的な何かを書きます。

OpenCVの使い方(8) 顔検出を行ってみる

皆さんこんにちは お元気ですか。私は元気です。さて、今日はOpenCVで顔検出を行ってみます。 顔検出とは、画面の中から顔を検出するタスクのことです。早速ですが、ソースコードを書いてみました。 #include <opencv2/opencv.hpp> #include <iostream> using namespace std; using namespa</iostream></opencv2/opencv.hpp>…

C++でモンテカルロ法を書いて、円周率を計算した

C++

皆さんこんにちは お元気ですか。私は元気です。さて、今日はモンテカルロ法を書いて、円周率を計算してみました。 基本的な戦略は簡単で、円の中にあるかどうかを判定します。判定式ですが(x**2 + y**2 円より中にあると計算します。四角の中に対してラン…

バブルソートをC++で書いてみた

C++

皆さんこんにちは お元気ですか。私は元気です。たまには普通のソーティングアルゴリズムでも書こうかと思います。 んで第一段として本日はバブルソートについて というか第一弾として疾走するネタ増えてないか・・?隣同士を比較して、番号が低いほうが大き…

C++の演算子オーバーロード

C++

皆さんこんにちは お元気ですか。私は元気です。 生活習慣が崩壊していることは多々多く、そろそろ戻したいと思うけど、更に加速する気がする今日は演算子のオーバーロードについて 個人的にはあまり使ったことがないので、さくっと勉強してみました。自分で…

Particle FilterでOpencvを使った物体追跡

皆さんこんにちは お元気ですか。私は元気です。さて、今日はOpencvを使ってParticle Filterで遊ぼうと思います。 すみません、遅くなりました。忙しくてなかなかこれを勉強する時間がなかったのですが なんとか実装できました。因みにParticle Filterは自作…

Opencvの使い方(7) 物体追跡

皆さんこんにちは お元気ですか。私は元気です。さて、今日は物体追跡をどうやるのかを調べてました 人物追跡はもう少し後かな。全然やったことがないので、さっぱりな分野でしたので、サンプルを探せば、なんと公式サンプルが落ちておりました。本日はサン…

OpenCVの使い方(6) エッジ検出の手法

皆さんこんにちは お元気ですか。私は元気です。今日はOpenCVでエッジ検出をやってみたよ。 OpenCVで用意されている関数では3つあります。SobelとLaplacianとCannyです。 #include <iostream> #include <opencv2/opencv.hpp> #include <opencv2/highgui/highgui.hpp> using namespace std; using namespace cv; int main</opencv2/highgui/highgui.hpp></opencv2/opencv.hpp></iostream>…

OpenCVの使い方(5) Matの使い方

皆さんこんにちは お元気ですか。私は元気です。OpenCVにはMat型やRectが使われています。 なんか遅い気がしますが、それらの扱い方を見ていきたいと思います。 因みに今回は画像は扱いません、悪しからず。 (人物追跡についてはアルゴリズムを調査中) Sam…

C++11 例題でわかるlambda

C++

皆さんこんにちは お元気ですか。私は元気です。さて、今日はlambda式についてやろうと思います。 C++11ではlambda式が導入されました。無名関数、ラムダ式、クロージャとも呼ばれたりしていますが、何やら便利なようなのです。さて、早速実行してみましょう…

C++ デストラクタが呼ばれるタイミング

C++

皆さんこんにちは お元気ですか。私は元気です。というか腹いてぇさて、今日はデストラクタが呼ばれるタイミングについて 知ってる人は当たり前ですが、変数にオブジェクトを突っ込んだものとnewしてポインタに入れたものでは挙動が異なります。言っているこ…

C++でMPIを使った並列処理(1)

C++

皆さんこんにちは お元気ですか。私は元気かもしれません。なんとなくMPIについてやりたいと思ったので調べてみた。 What is MPI MPIとはMessage Passing Interfaceの略で、並列コンピューティングを行う為の規格だそうな。要は複数のPCを使って計算を並列化…

C++でMeCabを使おう

C++

皆さんこんにちは お元気ですか。私は元気です。今日はC++でMeCabを使います。 MeCabのインストールはこちらをご確認くださいませ。 MeCabの使い方 一番オーソドックスな使い方を見てみましょう。 コンパイルコマンド 初めにコンパイルについてですが、 g++ …

最小公倍数と最大公約数

皆さんこんにちは お元気ですか。私は元気です。さて、今日は数学でも割りと使われる最小公倍数と最大公約数 のプログラムを組んでみました。 プログラムについて 説明 最小公倍数の求め方は2つのナンバーの最大公約数を求めて割ることだけです。 加えて、…

Casablancaのインストール

C++

皆さんこんにちは お元気ですか。私は燃え尽きました。今日はCasablancaのインストール記事を記載します。 Casablancaとは マイクロソフトのC++ REST SDKで、クラウドベースのクライアント・サーバーの APIデザインだそうな。C&#43;&#43; REST SDK &#40;code…

C++11 コンテナの初期化

C++

皆さんこんにちは お元気ですか。なんか眠い。さて、今日はC++11の初期化について今までC++のコンテナの初期化は面倒なものです。 一つ一つ代入しなければいけなかったということです。しかし、C++11になり、以下のような 初期化を可能としました。 #include <iostream></iostream>…

C++ 速度比較(8) inline展開ってどの程度影響あるの?

皆さんこんにちは お元気ですか。私は2日酔いです。今日はinline展開について見て行きたいと思います。 何気にコンパイラによる最適化によってお世話になっていたりもするこの展開ですが何をしているのでしょうか。 そもそもinline展開とは 関数をその場で…

DenoisingAutoEncoderを実装してみた(C++)

皆さんこんにちは お元気ですか。私は元気です。さて、今日はAutoEncoderの一種であるDenoisingAutoEncoderを実装してみました。 ublasの機能と補助機能ライブラリを使ってます。作ったのはいいのですが、ぶっちゃけファイル多くて困っています。理論はこち…

Ublasの拡張ライブラリを少々更新しました。

皆さんこんにちは お元気ですか。私は元気です。さて、今日は以前作っていた拡張ライブラリを更新していたというお話です。 以前、作っていたものに更に更新をかけ、パワーアップさせました。以前作っていたもの 追加の拡張内容 vector の行ごと列ごとの平均…

infやnanになる条件

C++

皆さんこんにちは お元気ですか。私は元気です。機械学習のプログラムを書いていると、infとnanの地獄に巻き込まれることが多々有ります。 正直、戦いたくはないのですが…。こんな時に出そうなinfやnanの条件を纏めてみました。Nan=値が数でない時に出現す…

constを付けた時は伝播に気をつけよう

C++

皆さんこんにちは お元気ですか。私は元気です。さて、C++ templateで引っかかってしまって解決になぜか異常に時間がかかるような内容だったので、掲載します。エラーメッセージは以下のような形式でした。 ./UblasLibrary.hpp:116:10: error: no matching f…

私の使うMakefileの設定(C++)

C++

皆さんこんにちは お元気ですか。私は元気です。さて、今回はMakefileについてです。 Makefileは自動的にコンパイルするには素晴らしいツールの一つでございますが、 結構書くのは手間取るものです。ということで参考にしながらある程度まともに動くものを作…

boostの行列演算ライブラリのublasの拡張ライブラリ作っています。

皆さんこんにちは お元気ですか。私は元気です。今日はublasについてです。ublasのvectorとかmatrixとか正直、結構不便です。 うん、絶対値を求めたベクトルを返す関数すらないし……。ということで今、これらを解決したいなーなんて思っているうちに拡張用の…

MNISTデータを読み込むプログラム(C++)

C++

皆さんこんにちは。 お元気ですか?私は中間審査が近くて泣きそうでございます。今日はMNISTをC++で読み込んでみます。 MNISTとは、0~9まである手書き文字認識のデータセットです。MNIST handwritten digit database, Yann LeCun, Corinna Cortes and Chris …

C++ 変数のクラスを調べたい時に使うtypeid

C++

皆さんこんにちは お元気ですか。私はそれなりに生きています。さて、今日はtypeidについて解説したいと思います。なんか型とかクラスを取得できるそうです。言葉で説明をすると非常に難しいような気がするので、例をまずは載せます。 ソースコード #include <iostream></iostream>…

C++11に関する記事まとめ

皆さんこんにちは お元気ですか。とにかく家の中が暑いのですが、なんとかならないのでしょうか。普段から私はC++を記載することが非常に多いのですが C++11の機能について調べてみたくなり、時々C++11の記事を記載させて頂いています。まだ、C++11の追加機…

C++ Boost Library 記事まとめ

皆さんこんにちは お元気ですか?私はもう疲れました。さて、今日記載するのはBoostの記事を纏めたものです。Boostというのはですね。C++のライブラリです。端的にいうと常備されていないけど、使われることが多いライブラリを一括してまとめられています。 …

C++ 勉強に使えるサイト 8選

C++

皆さんこんにちは お元気ですか。私はさて、今日はC++を勉強するにあたりオススメなサイトをご紹介したいと思います。 ロベールのC++教室 ロベールのC++教室基本的な文法を知るには便利なサイトです。if文や簡単なライブラリからポインタの詳しい使い…

C++11 Tuple

C++

皆さんこんにちは お元気ですか。私は元気です。さて、今日はC++11のTupleと呼ばれる機能について つまるところこれです。 tuple<int, string, double> tupleValue = make_tuple(10, "test", 9.7); 要は複数のクラスや型のコンテナを生成できます。 今までだと上記のは pair >と記</int,>…

混合ガウスモデルをC++で実装した(Gaussian Mixture Model)

皆さんこんにちは お元気ですか。私は元気です。今回は混合ガウスモデルと呼ばれるクラスタリング手法を解説したいと思います。まず手順ですが、今回は 1.負担率の計算 2.クラスタのパラメータの更新①負担率の計算 あるデータのラベルが出る確率というの…

【ネタ】アッカーマン関数によるプログラミング言語最速決定戦?

皆さんこんにちは おげんきですか?私はげんきです。本日は最速決定戦やります。いやはやC++がはええええとかいいつつ 他の言語どうだっけなんて思う常日頃です。 エントリー 6つの言語で行いました C++,Java,PHP,Python,Ruby,Javascript 種目 アッカーマン…

Boost::Date 日付管理を行うライブラリ

皆さんこんにちは お元気ですか。私は元気です。さて、今日はBoostの中にある日付管理のライブラリを解説します。現在の日付を表示したり、間の日付を計算したり日付に関する処理を行うことができます。 コンパイルオプション g++ date.cpp -lboost_date_tim…

Boost Thread(1) マルチスレッドに挑戦してみよう

皆さんこんにちは お元気ですか?やりたいこと、やることが増えすぎて困ってるけど、まぁなんとかなるでしょう。実は以前、C++11でのThreadを紹介させて頂きました。 今回はBoostを使ったMultiThreadを紹介したいと思います。因みにこのライブラリOSが変わっ…

Boost::Timer 時間計測に使う

皆さんこんにちは お元気ですか。私は元気です。今日はBoost::Timerについて C++ではc_clockを使うことで時間を計測することができます。 しかし、 Timer 通常の使い方 #include <iostream> #include <cmath> #include <string> #include <boost/timer/timer.hpp> using namespace std; int main(int argc, ch</boost/timer/timer.hpp></string></cmath></iostream>…

Boost::Property_tree XML解析

皆さんこんにちは お元気ですか。私は元気です。さて、今日はXMLの解析並びに記述を行いたいと思います。 もれなく、boostに解析するライブラリがあります。 XML Parse 解析用XMLファイル <root> <person> <name>山田太郎</name> <address>東京都文京区</address> <gender>漢</gender> <age>42</age> </person> <person> <name>山田花子</name> <address>兵庫県神戸市</address> </person></root>

Boost Graph(1) グラフの表示をしてみましょう!

皆さんこんにちは お元気ですか。私は元気です。さて、今日はBoost Graphについて解説したいと思います。 このグラフはあれですよ、ほら有向グラフとかのグラフで折れ線グラフとかではありません。 グラフを構築する #include <fstream> #include <vector> #include <string> #include <boost/graph/adjacency_list.hpp></boost/graph/adjacency_list.hpp></string></vector></fstream>…

C++11 Enum Class

C++

皆さんこんにちは お元気ですか。私は元気です。さて、今日はC++11にあるEnum Classについて解説したいと思います。 enum class Number{ ONE, TWO, THREE, FOUR }; C++にて実装されているenumと比較して classを入れることで実現ができていますね。 使い方は…

C++11 に新たな乱数生成ライブラリ!?

C++

皆さんこんにちは お元気ですか。私は元気です。さて、今日は乱数についてC++11では新たに乱数を生成するライブラリが追加されています。 一様分布を作るとき、以前まで線形合同法で作成されていたのが、このライブラリではメルセンヌ・ツイスターなど選択が…

C++11 thread(2) mutex。さぁレッツマルチスレッド!

C++

皆さんこんにちは お元気ですか?私は元気です。さて、今回はmutexで使うlockについてまずはこのプログラムを動かしてみましょう。 mutex_lock mutexとは 複数のスレッドで動作させるときに 他に影響を与えたくない場合にロックをかけ、侵入できるスレッドを…

Boost::ublas(4) 逆行列と行列式

皆さんこんにちは お元気ですか。私は元気です。久々にublasのネタですね。 ところで、boost::ublasで逆行列と行列式を求めたいことありませんか?そこで、ライブラリを探すのですが…実は逆行列と行列式は存在しません。 要はつまり、実装しろと…しかし、逆…

graphvizとdoxygenでC++ソースコード解析

C++

皆さんこんにちは お元気ですか?私はげんきです。今日はコード解析について取り組みたいと思います。 人のソースコードって結構読むの面倒ではないでしょうか?なんか纏めてある書類とかあれば楽なのになぁとか思うことは多々あります。そんな貴方へ贈る今…

C++で素数を求めよう(エラトステネスの篩)

皆さんこんにちは お元気ですか。さて、本日は素数を求めてみます。素数とかいう不思議な値がこの世には有ります。普段の生活において何に使うのかよくわかりませんが、プログラミングのコンテストとかで素数を利用した解き方もあるようです。 素数の特徴 計…

DesignPattern Proxy(代理人ですね)

皆さんこんにちは お元気ですか。私は元気です。さて、今日はDesignPatternのProxyについて Proxy まぁ何やってても良く聞くワードですが、代理人という意味が篭っています。 自分がない部分の処理を他に移譲します。 無駄にクラスを拡張するなという意味も…

C++11 thread(1)普通に使う(引数とか)

C++

皆さんこんにちは お元気ですか。私はげんきです。さて、今日はC++11に搭載されたthreadについて これが便利なところはOSによって処理を行う関数が異なっていたのを threadライブラリが賄ってくれるという素晴らしきかな。 普通に使う #include <iostream> #include <thread> u</thread></iostream>…

C++(C) 意外に知らないconst修飾子の使い方

C++

皆さんこんにちは お元気ですか。私は眠いです。さて、今日はconst修飾子の使い方です。 constとは 基本的に内容を書き換えることができないものにつけくわえる修飾子(Javaでいうfinal) なぜこんなのが必要なのでしょうか?変数の値を保証したい時に使いま…

DesignPattern Decorator(まるでトッピング)

皆さんこんにちは お元気ですか。良いコードってなんだろう。今日はDecoratorと呼ばれるデザインパターンを紹介したいと思います。 Decoratorとは イメージとして基底があって上にのっていくイメージ 機能を追加していくのに便利なデザインパターンですね。 …

C++11 STL Array

C++

皆さんこんにちは お元気ですか?私は元気です。C++11の新機能のArrayについて記載したいと思います。 Array(STL)の特徴 STLのArrayには大きな特徴がひとつあります。 algorithmのヘッダーを使えるので、fillやfindを使えることですね。 実際のソースコード…

C++で書くフィボナッチ数列

C++

皆さんこんにちは お元気ですかたまには面白くフィボナッチ数列をC++で解いてみようかなと思います。 フィボナッチ数列って? 0 1 2 3 5 8 13・・・・・・・となるような結構有名な数列です。 今回3通りの解き方で解いてみたよ 再帰 非常に遅くて有名な再帰…

DesignPattern Composite(再帰処理)

皆さんこんにちは お元気ですか?私はふるふるしてます。お酒がきついーさて今日、DesignPatternのCompositeです。 CompistePatternとは 「容器と中身を同一視すること」とのことです。実装上では容器と中身のメソッドを統一し、 容器の中に更に容器があるよ…

C++ 関数ポインタ(メンバ関数+関数)

C++

皆さんこんにちは お元気ですか?私は元気です。さて、今日は関数ポインタについて 関数ポインタの利点 関数ポインタを使うと、テーブルとして関数を引けるので、処理が簡単になります。 例えば以下のようなコードが有ります。(add,mulは定義されているとし…

C++言語 プリプロセッサ及びプリプロセッサ変数

C++

皆さんこんにちわ お元気ですか?私は元気です。さて、本日はプリプロセッサについて #defineとか#ifdefとかがそれにあたりますね。 一番有名かつ使われてるのはおそらく#includeでしょうか。それらを解説していきましょう。 プリプロセッサって? ソースコ…