OpenCV

建立矩陣,直接宣告矩陣大小及型態

Mat image(240, 320, CV_8UC3);

重新分配矩陣大小

image.create(480, 640, CV_8UC3);

建立矩陣時,同時給予初始值(所有值設成5)

Mat A33(3, 3, CV_32F, Scalar(5));

宣告所有值都是1的矩陣,再將所有值乘5

Mat B33 = Mat::ones(3, 3, CV_32F)*5.;

宣告所有值都是0的矩陣,再將所有值加5

Mat C33 = Mat::zeros(3, 3, CV_32F) + 5.;

宣告指定數值的矩陣

Mat A22 = (Mat_<float>(2,2) << 5, -15, 20, -15);

宣告矩陣並給予指定陣列

float B22data[] = { 5, -15, 20, -15};
Mat B22 = Mat(2, 2, CV_32F, B22data).clone();

宣告隨機分佈的亂數值

cv::Mat vec01 = cv::Mat::zeros(1, 10, CV_8U); 
cv::randu(vec01, cv::Scalar(0), cv::Scalar(256));

宣告高斯分佈的亂數值

cv::Mat vec02 = cv::Mat::zeros(1, 10, CV_8U); 
cv::randn(vec02, cv::Scalar(128), cv::Scalar(10));

cv::Mat轉換成cv::Mat(不複製記憶體)

Mat image_alias = image;

將陣列轉換成cv::Mat

float* Idata = new float[480*640*3];
Mat I(480, 640, CV_32FC3, Idata);

將vector陣列轉換成cv::Mat

vector<Point> iptvec(10);
Mat dstMat(iptvec);

將IplImage轉換成cv::Mat

IplImage* img = cvCreateImage(cvSize(320,240), 16, 1);
Mat dstMat = cvarrToMat(img);

將cv::Mat轉換成IplImage

Mat srcMat;
IplImage img = srcMat;

將cv::Mat轉換成CvMat

Mat srcMat;
CvMat dstCvMat = srcMat;

將IplImage複製到cv::Mat(複製記憶體)

IplImage* img = cvCreateImage(cvSize(320,240), 16, 1);  
Mat dstMat = cvarrToMat(img).clone();

將cv::Mat複製給vector

Mat srcMat;
vector<Point2f> ptvec = Mat_<Point2f>(srcMat);