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

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

C++

CMakeを使ってビルドのみしている人のためのCMake入門

C++

皆さんこんにちは お元気ですか。ついに自宅のパスタがなくなりそうです。さて、本日のテーマはcmakeです。 大半の人のcmake、実はこんな感じなのではないでしょうか。 インストール時にお世話になる(おまじない)けど、何もわからない(文字通り) 仮に見…

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.クラスタのパラメータの更新①負担率の計算 あるデータのラベルが出る確率というの…