Mat 物件的使用

2021-10-03 10:34:50 字數 2028 閱讀 8150

部分複製: 一般情況下只會複製 mat 物件的頭和指標部分,不會複製資料部分

mat a = imread(src_imagse)

mat b(a)// 只複製

完全複製: 如果把mat物件的頭部和資料部分一起複製,可以通過以下兩個api實現.

mat f = a.cone()

mat g;a.copyto(g)

mat物件使用四個要素

mat物件使用的示例

#include

#include

using

namespace std;

using

namespace cv;

intmain()

namedwindow

("src image"

, window_autosize)

;imshow

("src image"

, src)

; mat dst;

dst =

mat(src.

size()

, src.

type()

);dst =

scalar

(127,0

,255);

namedwindow

("dst"

, window_autosize)

;imshow

("dst"

, dst)

;cvtcolor

(src, dst, color_bgr2gray)

;printf

("input image channels : %d\n"

, src.

channels()

);printf

("output image channels : %d\n"

, dst.

channels()

);int cols = dst.cols;

int rows = dst.rows;

printf

("rows : %d cols : %d\n"

, rows, cols)

;const uchar* firstrow = dst.ptr(0

);printf

("fist pixel value : %d\n"

,*firstrow)

; mat m

(100

,100

, cv_8uc1,

scalar

(127))

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

mat m1;

m1.create

(src.

size()

, src.

type()

);m1 =

scalar(0

,0,255);

mat csrc;

mat kernel =

(mat_<

char

>(3

,3)<<0,

-1,0

,-1,

5,-1

,0,-

1,0)

;filter2d

(src, csrc,-1

, kernel)

; mat m2 = mat::

eye(2,

2, cv_8uc1)

; cout <<

"m2 ="

<< endl << m2 << endl;

imshow

("output"

, m2)

;waitkey(0

);return0;

}

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的資料型別 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 ...

Mat物件特點

輸出影象的記憶體是自動分配的 使用opencv的c 介面,不需要考慮記憶體分配和釋放等問題 賦值操作和拷貝建構函式只會複製頭部分和指標 同乙個指標指向同乙個資料 mat dst1 src 賦值 mat dst2 src 拷貝建構函式 使用clone 和copyto 兩個函式實現資料的完全複製 其他用...