画像処理ライブラリOpenCVを使いこなせるようになりたいので、簡単に使ってみました。
OpenCVのc++ライブラリでは、根幹をなすcv::Matという行列クラスがあるので、Hello, World的にそのインスタンスを生成するコードを書いてみました。
今回は手元のMac (バージョン10.11.6、El Capitan) で動かしました。
OpenCVのインストール
brew install opencv
以下のディレクトリにOpenCVがインストールされました。
/usr/local/Cellar/opencv/3.3.1_1
行列を定義し、単位行列と掛け算するコード
以下のようなコードを書き、hellocv.cpp
として保存します。
# include <iostream>
# include <opencv2/core/core.hpp>
int main(int argc, char* argv[])
{
cv::Mat m1 = (cv::Mat_<double>(3, 3) << 0, 1, 2, 3, 4, 5, 6, 7, 8);
cv::Mat e = cv::Mat::eye(3, 3, CV_64F);
cv::Mat res = m1 * e;
std::cout << res << std::endl;
return 0;
}
このコードで、m1
は3 x 3 の正方行列で、各要素はdouble型であり、以下のような値が格納されます。
\left(
\begin{matrix}
0 & 1 & 2 \\
3 & 4 & 5 \\
6 & 7 & 8
\end{matrix}
\right)
また、e
は3 x 3の単位行列です。これもCV_64F
の指定によりdouble型としています。
\left(
\begin{matrix}
1 & 0 & 0 \\
0 & 1 & 0 \\
0 & 0 & 1
\end{matrix}
\right)
res
はm1
とe
の掛け算なので、m1
と同じ結果が返ってきます。
それをコンソールに出力します。
動作確認
ビルドして、動作確認してみます。
以下のように、-I
、-L
、-l
に適切なパスやファイル名を与えて、必要なインクルードファイルやライブラリファイルが読み込まれるようにしてビルドします。
gcc -I/usr/local/Cellar/opencv/3.3.1_1/include -L/usr/local/Cellar/opencv/3.3.1_1/lib -ohellocv -lopencv_core -lstdc++ hellocv.cpp
実行してみます。
$ ./hellocv
[0, 1, 2;
3, 4, 5;
6, 7, 8]
期待通り、m1
と同じ行列が出力されました。