部分複製: 一般情況下只會複製 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 兩個函式實現資料的完全複製 其他用...