2015年8月16日日曜日

OpenCV Mat型 初期化と要素へのアクセス

OpenCVのMat型は、基本的には画像のデータを入れておく型でありながら、行列演算にも使えます。掛け算とか基本的なことはさておき、データの入力方法でかなり悩んでしまったため、このします。

ここで紹介する入力方法は2つ。初期化と要素へのアクセスです。

初期化:
cv::Mat A = cv::Mat(6, 6, CV_64FC1);
double Adata[6][6] = { { 1, 0, 0, 0, 0, 0 },
{ 0, 1, 0, 0, 0, 0 },
{ 0, 0, 1, 0, 0, 0 },
{ 0, 0, 0, 1, 0, 0 },
{ 0, 0, 0, 0, 1, 0 },
{ 0, 0, 0, 0, 0, 1 } };
A = cv::Mat(3, 3, CV_64FC1, Rdata).clone();

注:Cloneの方がミスがなくて確実。遅くなるしメモリ量の問題もあるから注意

要素アクセス:
・1変数の型
変数名.at<型名>(行, 列)

例:代入(double)
cv::Mat A = cv::Mat(3, 1, CV_64FC1);
A.at<double>(0, 0) = (double)1.0;
A.at<double>(1, 0) = (double)1.0;
A.at<double>(2, 0) = (double)1.0;

・各要素がチャンネルなら、
変数名.at<型名>(行, 列)[チャンネルNo]

参考
http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q12128343222

0 件のコメント:

コメントを投稿