LoginSignup
2
0

More than 5 years have passed since last update.

OpenCVのcv::MatをHello, world的に使ってみる

Posted at

画像処理ライブラリ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)

resm1eの掛け算なので、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と同じ行列が出力されました。

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0