C++

画像処理

【C++/Python】OpenCVによるガンマ補正

今回はOpenCVでガンマ補正を実装する方法についてです。ガンマ補正はOpenCVに関数が実装されていないため自前で実装する必要があります。1. ガンマ補正とは画像データを入力Input, ディスプレイに表示される明るさをOutputとした...
プログラミング

【C++】EigenのMatrixクラスにOpenCVのMatクラスを入力する方法【Mapクラス】

EigenのMatrixクラスに配列を入力したい場合があると思います。今回はEigen::Mapクラスを使用してEigenのMatrixクラスに配列の値を入力する方法と、それを応用してOpenCVのMatクラスとEigenのMatrixクラ...
環境構築

【C++】ONNX Runtime+Visual Studio 2022の環境構築

今回はC++版のONNXライブラリをVisual Studio 2022で使用できるように設定していこうと思います。1. ONNXの環境設定1.1. プロジェクト作成まずはVisual Studio 2022でプロジェクトを作成します。Vi...
プログラミング

【OpenCV】cv::Matとunsigned char*の相互変換

OpenCVのcv::Matクラスとunsigned char*の相互変換についてです。画像の入出力にOpenCVを使って画像処理自体は配列を直接操作したい場合があると思います。そのため、今回はcv::Matクラスと配列(符号なし8bitデ...
プログラミング

【C++】EigenのMatrixクラスの初期化方法

今回はEigenのリファレンスを参照してMatrixクラスの初期化方法についてまとめました。1. MatrixクラスMatrixクラスは行列を格納するためのクラスで、クラステンプレートとして以下のように定義されています。class Eige...
環境構築

【C++】OpenCV+Visual Studio 2022の環境構築

今回はOpenCVをVisual Studio2022で使用できるように設定していこうと思います。最近は「OpenCV」で検索してもPythonの記事ばかりですがここではC++版の環境構築について解説します。1. OpenCVのダウンロード...
環境構築

C++版PyTorch「LibTorch」の環境構築【Visual Studio】

Deep Learningを実際に使う場合はやはりライブラリに頼ることになると思うのでこちらの学習もしていこうと思います。特に最近は「PyTorch」と呼ばれるライブラリがメジャーだと思います。PyTorchはこちらのサイトからダウンロード...
プログラミング

【C++】Mnistデータセットを読み込みEigenで扱う

Mnistは手書き数字画像とラベルデータをまとめたデータセットで機械学習の性能評価などによく利用さます。Deep Learningの入門書ではPythonで扱われることが多いのですが、今回はC++で読み込みEigenで扱う形式に変換してみた...
プログラミング

【C++】ソフトマックス関数を実装してみる

今回はニューラルネットワークの出力層でよく使われる「ソフトマックス関数」を実装してみる。1. ソフトマックス関数ソフトマックス関数は以下の式で表される。\この式は出力n個に対してk番目の出力\(y_k\)を求めています。ソフトマックス関数は...
プログラミング

【C++】シグモイド関数を実装してみる

「ゼロから作るDeep Learning」という本を買ったのでこの本を参考に勉強していこうと思います。Pythonのソースコードもついているので参考にします。1. 活性化関数ニューラルネットワークは層を重ねることで非線形の問題も解くことがで...