cv::Mat

cv-mat.png

初期化

これが一番スマートかな

 cv::Mat_<unsigned short> mt(4,4);

ただし、わけのわからない値で初期化されるよ。

全部同じ値で初期化

cv::Mat satMat=cv::Mat::zeros(range_reso*2,range_reso*2,CV_8U);//MatLab風 
  • zeros
  • ones
  • eyes….単位行列にする

特別な値で全初期化

cv::Mat mtx(cv::Size(width,height), CV_16U,cv::Scalar(0,0,0));//黒で初期化

定数名 C++での型 チャンネル数
CV_8U unsigned char 1
CV_8UC4 unsigned char 4
CV_16U unsigned short 1
CV_16UC4 unsigned short 4

配列で初期化

cv::Mat m1(3, 3, CV_32F, data);
cv::Mat_<unsigned short> mt(4,4,imgdata);

マルチチャンネルの初期化

cv::Mat_<cv::vec3b> hsvMat(1024,1024);//これがいいかも
cv::Mat m0 = (cv::Mat_<int>(3,6) << 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18);
cv::Mat m1 = m0.reshape(2);//こうすると、↑の数値の並びを、(1,2),(3,4),...と解釈しなおしてくれる。引数は2ちゃんねるってこと

cv::vec3bはunsigned charの3つ子ってこと。
Vec<uchar, 3>でもいいらしい。

その他

乱数でも初期化できるらしいよ!

cv::MatをIplImageに変換する

cv::Mat cppMat = cv::imread("image.bmp");
IplImage iplImage = cppMat;

サポートサイト Wikidot.com