#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 ...