1.mat物件建構函式
mat src;
mat dst;
dst =
mat(src.
size()
, src.
type()
);
//畫素100×100的單通道,gray-127顏色
mat m
(100
,100
, cv_8uc1,
scalar
(127))
;//畫素100×100的三通道,rgb為0,0,255的顏色
//事實證明,opencv中對rgb影象資料的儲存順序是bgr,而且scalar()的順序也是b,g,r
mat m
(100
,100
, cv_8uc1,
scalar(0
,0,255))
;
mat dst;
dst =
mat(src.
size()
, src.
type()
);dst =
scalar
(127,0
,255);
//可以像mat (size size,int type,const scalar &s)這樣連起來
dst = mat:
:zeros
(src.
size()
, src.
type()
);//dst的大小,型別和原影象一致
m2 = mat:
:zeros(2
,2,cv_8uc1)
;//構造乙個2×2的單通道影象
//可以類似為矩陣m2=
m2 = mat:
:zeros(2
,2,cv_8uc1)
;//構造乙個2×2的單通道影象
//可以類似為矩陣m2= 注意是單位矩陣
2.常用方法
src.
copyto
(dst)
;//複製src到dst
const uchar* firstrow = dst.ptr(0
);printf
("fist pixel value : %d\n"
,*firstrow)
;
mat a=
imread
(imgfilepath)
;mat b
(a)// 只複製
mat f = a.
clone()
;//或
mat g; a.
copyto
(g);
mat m;
m.create(4
,3, cv_8uc2)
;m =
scalar
(127
,127);
cout <<
"m = "
<< endl <<
" "<< m << endl << endl;
uchar* firstrow = m.ptr(0
);printf
("%d"
,*firstrow)
;
mat c =
(mat_<
double
>(3
,3)<<0,
-1,0
,-1,
5,-1
,0,-
1,0)
;
cout <<
"c = "
<< endl <<
" "<< c << endl << endl;
#include
#include
using namespace std;
using namespace cv;
intmain
(int argc,
char
** ar**)
namedwindow
("input"
, cv_window_autosize)
;imshow
("input"
, src)
;/*mat dst;
dst = mat(src.size(), src.type());
dst = scalar(127, 0, 255);
namedwindow("output", cv_window_autosize);
imshow("output", dst);*/
mat dst;
namedwindow
("output"
, cv_window_autosize)
;cvtcolor
(src, dst, cv_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;
}
OpenCV 學習筆記(一)Mat
opencv是由c語言實現的,實際上它使用的結構體也是遵循物件導向思想設計的,iplimage由cvmat派生 資訊 和乙個指向儲存所有畫素值的矩陣 根據所選儲存方法的不同矩陣可以是不同的維數 的指標。mat矩陣頭 包括 typedef struct cvmat data ifdef cpluspl...
opencv建立Mat物件
在opencv中引入了mat類。mat類是乙個非常優秀的影象類,它同時也是乙個通用的矩陣類,可以用來建立和操作多維矩陣。mat類裡面定義了許多建構函式,可以很方便地根據要求建立mat物件。常使用的建構函式有 1 mat mat 無引數建構函式 2 mat mat int rows,int cols,...
OpenCV中Mat 型別學習筆記
printf img.size 函式返回值 n cout 報錯 原因,mat.step1 0 需要用圓括弧 mat的step,size,step1,elemsize,elemsize1這幾個屬性非常容易混淆。opencv的官方參考手冊也沒有解釋清楚這幾個概念。step1 i 每一維元素的通道數 st...