Mat物件的基本構建

2021-08-18 18:58:23 字數 1603 閱讀 3022

#include #include #include #include using namespace std;

using namespace cv;

int main()

namedwindow("test opencv setup", cv_window_autosize);

imshow("test opencv setup", src);

mat dst;

// dst = mat(src.size(), src.type());

// dst = scalar(127, 0, 255);

// 兩種複製方法(形式+資料)

//dst = src.clone();

src.copyto(dst);

// 僅有形式,無資料

mat t(src);

imshow("output t", t);

cvtcolor(src, dst, cv_bgr2gray);

imshow("output", dst);

cout << "input image channels: " << src.channels() << endl;

cout << "output image channels: " << dst.channels() << endl;

// 獲取第乙個畫素點

const uchar* firstrow = dst.ptr(0);

cout << "the first pix:" << (int)*firstrow << endl;

// 獲取影象畫素點的長寬

int rows = dst.rows;

int cols = dst.cols;

cout << "rows: " << rows << " cols: " << cols << endl;

// 以下為幾種構建方法

mat m(100, 100, cv_8uc1, scalar(127));

//cout << "m = : " << endl << m << endl;

imshow("output m", m);

mat m1;

m1.create(src.size(), src.type());

m1 = scalar(0, 255, 0);

imshow("output m1", m1);

mat kernel = (mat_(3, 3) << 0, -1, 0, -1, 5, -1, 0, -1, 0);

filter2d(src, dst, -1, kernel);

imshow("new dst", dst);

mat m2 = mat::zeros(2, 2, cv_8uc1);// 同等大小的全黑

cout << "m2 = : " << endl << m2 << endl;

mat m3 = mat::eye(2, 2, cv_8uc1);// 同等大小的對角線為1,其他為0

cout << "m3 = : " << endl << m3 << endl;

waitkey(0);

return 0;

}

Mat物件的構造

1.部分複製 一般情況下,只會複製mat物件的頭和指標部分,不會複製資料部分。相當於c 中的指標 mat a imread imgfilepath mat b a 2.完全複製 複製頭部和資料部分 相當於c 中的拷貝乙份備份 mat f a.clone 3.mat m 3,3,cv 8uc3,sch...

Mat 物件的使用

部分複製 一般情況下只會複製 mat 物件的頭和指標部分,不會複製資料部分 mat a imread src imagse mat b a 只複製 完全複製 如果把mat物件的頭部和資料部分一起複製,可以通過以下兩個api實現.mat f a.cone mat g a.copyto g mat物件使...

建立Mat物件

mat畫素點的儲存方法 mat的資料型別 cv 8u 8bit unsigned integers 0 255 8 bit unsigned integer uchar cv 8s 8bit signed integers 128 127 8 bit signed integer schar cv ...