最終更新: mikk_ni3_92 2008年09月04日(木) 17:53:14履歴
現在地 >> メニュー >> サンプルコード::OpenCV >> OpenCV::基本編05
INDEX: OpenCV::基本編04 << OpenCV::基本編05 >> OpenCV::基本編06
cvCreateMat関数でメモリ確保ができる。
[例]
この後、データを設定する事になる。
cvMat関数やcvInitMatHeader関数がある。
[例1]:cvMat関数を使った場合
[例2]:cvInitMatHeader関数を使った場合
OpenCVのCvMat構造体は
とあるようにC++では
INDEX: OpenCV::基本編04 << OpenCV::基本編05 >> OpenCV::基本編06
cvCreateMat関数でメモリ確保ができる。
[例]
CvMat *M = cvCreateMat(256,512,CV_32FC1); //256行512列の行列、float(32bit)、1チャネル
この後、データを設定する事になる。
#include <iostream> #include <algorithm> #include <cv.h> float dataM[]={1,2,3,4,5,6,7,8}; int main(int argc, char **argv) { CvMat *M = cvCreateMat(2,4,CV_32FC1);//2行4列(すべての行は1要素が4バイトでアライメント) cvSetData(M,dataM,M->step); //データ設定(今回はstep = 4×4 = 16バイトが行の長さ) std::copy(M->data.fl,M->data.fl+8,std::ostream_iterator<float>(std::cout,", ")); std::cout << "\n"; return EXIT_SUCCESS; }
cvMat関数やcvInitMatHeader関数がある。
[例1]:cvMat関数を使った場合
#include <iostream> #include <algorithm> #include <cv.h> float dataM[]={1,2,3,4,5,6,7,8}; int main(int argc, char **argv) { CvMat M = cvMat(1,8,CV_32FC1,dataM);//1行8列の行列、float、1チャネル、DataMを設定 std::copy(M.data.fl,M.data.fl+8,std::ostream_iterator<float>(std::cout,", ")); std::cout << "\n"; return EXIT_SUCCESS; }
[例2]:cvInitMatHeader関数を使った場合
#include <iostream> #include <algorithm> #include <cv.h> float dataM[]={1,2,3,4,5,6,7,8}; int main(int argc, char **argv) { CvMat M; cvInitMatHeader(&M,1,8,CV_32FC1,dataM); std::copy(M.data.fl,M.data.fl+8,std::ostream_iterator<float>(std::cout,", ")); std::cout << "\n"; return EXIT_SUCCESS; }
OpenCVのCvMat構造体は
typedef struct CvMat { int type; /* CvMat signature (CV_MAT_MAGIC_VAL), element type and flags */ int step; /* full row length in bytes */ int* refcount; /* underlying data reference counter */ union { uchar* ptr; short* s; int* i; float* fl; double* db; } data; /* data pointers */ #ifdef __cplusplus union { int rows; int height; }; union { int cols; int width; }; #else int rows; /* number of rows */ int cols; /* number of columns */ #endif } CvMat;
とあるようにC++では
- row → 高さ(y)
- cols → 幅(x)